Kmeans++#
术语解释#
Kmeans++ 是一种针对经典 Kmeans 算法在初始化簇中心方式上进行改进的聚类算法。它的核心逻辑是逐一选取 K 个初始簇中心,并确保新选取的中心点离已有中心点尽可能远 。
一言以蔽之,Kmeans++算法仅仅在初始化簇中心的方式上做了改进,其他地方同Kmeans聚类算法一样。将Kmeans++在初始化簇中心时的方法总结成一句话就是: 逐个选取K个簇中心,并且离其他簇中心越远的样本点越有可能被选为下一个簇中心。
关于 Kmeans++ 算法的原理讲解,可以参见 「11.5 Kmeans++原理:聚类中心初始化策略」 内容。
出现动机#
传统的 Kmeans 随机初始化 K 个中心,如果初始点选得不理想(例如多个点落在了同一个簇内),算法极易陷入局部最优解,导致聚类结果错误,如下图所示。

为了避免由于初始化位置不当导致的聚类精度大幅下降或收敛困难,研究人员提出了 Kmeans++ 来提供一种更具“预见性”的初始化策略

优点缺点#
-
优点:
-
显著提升聚类质量:通过让初始簇中心彼此相距较远,它能有效避免多个中心出现在同一个簇中的情况,从而提高找到全局最优解的可能性。
-
收敛更稳定:相较于纯随机初始化,Kmeans++ 选取的“种子”点通常能让后续的迭代过程更加稳健。
-
兼容性强:它仅改进了初始化阶段,后续的分配和更新逻辑与 Kmeans 完全一致,因此可以无缝替代原生 Kmeans 。
-
-
缺点:
-
初始化计算开销增加:由于初始化过程是串行(逐个)选取的,且每选一个点都需要计算所有样本到已有中心的距离,在大规模数据集上初始化的耗时会比随机初始化更长。
-
继承了 Kmeans 的固有缺陷:虽然优化了起点,但它本质上仍是 Kmeans 框架下的算法,因此依然难以处理环形、长条形等非线性分布的异形数据,且对异常值和噪声仍然敏感。
-
参数 K 值仍需预设:它并没有解决如何科学确定聚类数量 K 的难题,通常仍需配合肘部法或轮廓系数法进行判断。
-
相关术语#
- Kmeans聚类算法