OpenCV官方文档 理解k

理解k - means聚类

目标

在这一章中,我们将了解k - means聚类的概念,它是如何工作等。

理论

我们将这个处理是常用的一个例子。

t恤尺寸问题

考虑一个公司要发布一个新模型的t恤。 显然他们将不得不制造模型满足人们各种尺寸的大小不同。 所以公司的数据甚至€™身高和体重,并把它们放到图,如下:

T-shirt Problem

公司无法为所有的尺寸制作衣服。 相反,他们把人分为小,中和大,只生产这3个模型来适合所有的人的只存。 这种分组方式将把人分为分成三组,而我们可以通过k - means聚类算法提供最好的3个尺寸,这将满足所有的人的需求。 不过如果数据显示三个尺寸并不合适,那么聚类算法也可以进行更多更合适的分类,列如五类。 检查下图:

People Grouped into Different Sizes

它是如何工作的呢?

这个算法是一个迭代的过程。 我们将解释它一步一步的帮助下图片。

考虑一组数据如下(你可以认为这是T恤问题)。 我们需要集群数据分成两组。

Test Data

步骤:1——算法随机选择两个重心,C1C2(有时,任意两个数据作为重心)。

一步:2——它质心计算每个点的距离。 如果一个测试数据更加接近C1,那么数据标签贴上 €˜0。 如果它是更接近C21,然后贴上 1€˜€™ (如果有更多的重心,贴上€˜2€™,一个€˜3€™等)。

在我们的例子中,我们将颜色€˜0 a€™贴上了红色,和一个€˜1€™与蓝色的标签。 以上操作后我们得到下面的图像。

Initial Centroid Selection and Data Collection

一步:3——接下来,我们计算所有蓝色的平均分开点,红点,这将是我们新的重心。 这是C1C2转移到新计算质心。 (记住,显示的图片是不正确的值,而不是真实的身材尺寸,该数据仅供演示)。

再一次,执行步骤2新重心和标签数据€˜0 和 €˜1€™。

所以我们得到结果如下:

New Centroid Calculated and Data Re-laballed

现在- 2步- 3步是迭代直到重心都是聚合不动点。(也可能停止根据我们提供的标准,如最大迭代数,或达到一个特定的准确性等等)。 这些点是测试数据及其对应的质心之间的距离之和最小。 或者只是,之间的距离之和C1 leftrightarrow Red\_PointsC2 leftrightarrow Blue\_Points是最低的。

minimize ;igg[J = sum_{All: Red_Points}distance(C1,Red\_Point) + sum_{All: Blue\_Points}distance(C2,Blue\_Point)igg]

最终结果几乎看起来像下图:

Final Result

这是一个直观的理解k - means聚类。 更多细节和数学解释,请阅读任何标准机器学习教科书或检查的额外资源的链接。 它只是一个顶层的k - means聚类。 有很多修改算法,如何选择初始质心,如何加快迭代过程等。

额外的资源

  1. 机器学习课程视频讲座,教授Andrew Ng(一些图片取自这)
原文地址:https://www.cnblogs.com/fonttian/p/9162839.html