没有人告诉算法正确答案,它也能把相似的东西归到一起——这就是聚类的魅力。K 均值是最常用的聚类方法之一,本文讲清它如何反复“选中心、归组、重算中心”,以及 K 值该怎么选、它有哪些短板。
核心要点
- K 均值通过反复分配样本与更新中心,让组内差异不断变小。
- 它不需要任何标注数据,属于典型的无监督学习方法。
- K 值需要人为事先指定,且结果会受到初始中心选择的影响。
没有答案也要分组
前面聊的多数方法都需要先有标准答案:训练数据里明明白白写着每条属于哪一类。可现实里标注很贵,甚至根本不知道该分成几类。聚类就是在这种没有答案的情况下,让算法自己根据相似程度把样本归堆。K 均值是其中最简单、也最广为人知的一种。
它的目标很朴素:让同一组内部尽量相似,不同组之间尽量不同。这里的相似用距离衡量,通常是直线距离。于是问题变成:找到 K 个中心点,使所有样本到自己所属中心的距离总和最小。听起来清楚,但要一步算出最优解其实很难,实践中用的是逐步改进的办法。
两步交替的收敛过程
算法从一个初始设定开始:先挑 K 个点当中心。然后反复执行两步——第一步,把每个样本分配给离它最近的中心;第二步,把每个中心挪到它所辖样本的均值位置。每轮迭代,距离总和只会变小不会变大,所以过程一定会停下来,最终得到一组稳定的分组结果。
这个流程对初始值敏感。初始中心选得不好,可能落进一个明显更差的分组里出不来。常见的补救是多跑几遍、每次换不同的初始中心,取结果最好的那次;也有更聪明的初始化策略,让中心之间尽量拉开距离。此外,事先把数据标准化也很重要,否则量纲大的列会主导距离计算。
K 该取多少
K 需要人提前指定,这是它最受诟病的地方。一个经验做法是画“肘部图”:把不同 K 对应的距离总和画成折线,随着 K 增大曲线必然下降,但下降速度会在某处明显放缓,那个拐点就是较合适的 K。另一种思路是从业务出发,比如客户分层本来就打算分三类。
它还有几个固有的短板。它默认每个簇大致是圆形、大小相近的,遇到细长条或套娃形状的簇就会判错;离群点还会把中心拽偏。因此使用前先看看数据的分布形状,再决定是用 K 均值,还是换成基于密度、能识别任意形状簇的其他聚类方法。
常见问题
聚类结果怎么判断好不好?
如果没有标准答案,可以看簇内紧凑程度与簇间分离程度的比值,值越小说明分组越清晰。有参考答案时则可以用外部指标,比较聚类结果与真实标签的一致性。最实用的办法往往是把结果降维画出来,用眼睛确认分出来的堆是否符合业务直觉。
本文为 AI 科普内容,仅用于知识普及,不构成任何技术选型、投资或职业决策建议。