本章将系统阐述K均值聚类的算法原理及其工作机制。
理论基础
通过一个典型应用案例进行说明:
T恤尺码制定问题
假设某服装公司准备推出新款T恤,需生产不同尺码以满足各类体型需求。 为此,公司收集客户的身高体重数据并绘制如下分布图:
服装企业无法生产所有尺码的T恤,转而将客户群体划分为小号(S)、中号(M)、大号(L)三类,仅生产这三种标准尺码即可覆盖所有客户需求。 这种三分群操作可通过K均值聚类实现,该算法能自动计算出最优的三个尺码规格。 若效果未达预期,企业可增加分组数量(如五组)进一步优化,具体分组效果如下图所示:
算法工作原理
该算法采用迭代计算机制,我们将配合示意图分步骤说明:
以如下数据集为例(可类比T恤尺码问题),现需将其划分为两个簇:
步骤 1 - 算法随机选择两个质心 $C1$ 和 $C2$(有时会直接选取任意两个数据点作为初始质心)。
步骤 2 - 计算每个数据点到两个质心的距离。如果某个测试数据点离 $C1$ 更近,则将其标记为“0”; 如果离 $C2$ 更近,则标记为“1”(若有更多质心,则标记为“2”、“3”等)。
在本例中,我们将所有标记为“0”的点用红色表示,标记为“1”的点用蓝色表示。完成上述操作后,得到如下图像。
步骤3 - 接下来分别计算所有红色点和蓝色点的平均值,这些均值将成为新的聚类中心点。 即 $C1$ 和 $C2$ 将移动到新计算出的中心位置。(请注意,图示数据并非真实数值,比例也非真实比例,仅用于演示目的)。
再次执行步骤2,基于新的中心点重新将数据标记为"0"和"1"。
最终得到如下结果:
步骤2和步骤3将循环迭代,直到两个聚类中心点收敛至固定位置为止。 (也可根据预设条件提前终止,例如达到最大迭代次数或特定精度要求等。) 最终得到的中心点满足: 所有测试数据到其对应中心点的距离之和达到最小值。简而言之,即 $C1 \leftrightarrow Red\_Points$ 到所有红色点的距离之和与 $C2 \leftrightarrow Blue\_Points$ 到所有蓝色点的距离之和的总和最小。
$$minimize \;\bigg[J = \sum_{All\: Red_Points}distance(C1,Red\_Point) + \sum_{All\: Blue\_Points}distance(C2,Blue\_Point)\bigg]$$
最终结果大致如下图所示:
以上就是K-Means聚类算法的直观理解。如需了解更详细的理论推导和数学解释,请参阅标准机器学习教材或扩展阅读资料中的相关链接。本文仅展示了K-Means算法的表层原理,实际应用中还存在诸多改进方案。
扩展阅读
- 《机器学习》课程,吴恩达教授课程视频(部分图示引用自该课程)。