目标
在本章中,将了解
- K-Means聚类的概念以及其工作原理等
理论
本文将以一个常用的例子来处理这个问题。
T-shirt尺寸问题
假设一家公司将向市场发布新型号的T恤,将不得不制造不同尺寸的模型,以满足各种身材的人们需求。因此,该公司会记录人们的身高和体重数据,并将其绘制到图形上,如下所示:
公司不会制作所有尺寸的T恤,因为代价太大。取而代之的是,可以将人划分为小、中和大三种尺寸,并仅制造这三种适合所有人的模型。可以通过**k均值聚类(k-means clustering)**将人员分为三组,并且算法可以提供最佳的3种大小,这将满足所有人员的需求。同样地,公司也可以将这些采样结果划分为更多的组,假设是五组,依此类推,如下图所示:
如何工作
该算法是一个迭代过程。下面以图像的方式逐步解释它。
假设如下一组数据(可以将其视为T恤问题),我们需要将此数据分为两类。
- 步骤:1 -算法随机选择两个质心 C1C_1和C2C_2(可以将任何两个数据作为质心)
- 步骤:2 –计算每个点到两个质心的距离。如果测试数据更接近C1C_1,则该数据标记为
0
类,如果它更靠近C2C_2,则标记为1
类(如果存在更多质心,则标记为2
,3
等)
在上面的示例中,将所有标记为0
的用红色标记, 1
用蓝色标记得到下图:
- 步骤:3 -接下来,分别计算所有蓝点和红点的平均值,将其作为新的质心,C1C_1和C2C_2
转移到新计算的质心。(请记住,显示的图像不是真实值,也不是真实比例,仅用于演示)。
再次,使用新的质心执行步骤2,并将标签数据设置为0
和1
之后不断迭代步骤2和步骤3,直到两个质心都收敛到固定点。(或者可以根据提供的停止标准(例如最大的迭代次数或达到特定的精度等)将其停止)
固定点使得测试数据与其对应质心之间的距离之和最小。或者简单地说,C1↔Red_PointsC1 leftrightarrow Red_Points和C2↔Blue_PointsC2 leftrightarrow Blue_Points之间的距离之和最小。
minimize [J=∑All Red_Pointsdistance(C1,Red_Point)+∑All Blue_Pointsdistance(C2,Blue_Point)]minimize ;bigg[J = sum_{All: Red_Points}distance(C1,Red_Point) + sum_{All: Blue_Points}distance(C2,Blue_Point)bigg]
最终结果如下所示:
上述仅仅是对K-Means聚类的直观理解。有关更多详细信息和数学解释,请阅读其它标准的机器学习教科书或查看其它资源。本文只是K-Means聚类的宏观层面,此算法有很多其它变体,例如如何选择初始质心,如何加快迭代过程等。