← 返回题目列表

K-means 为什么对初始化敏感?K-means++ 怎么改进?

高频 中等 第 9 / 25 题 更新于 2026/09/25
无监督学习聚类降维PCA
学习 AI 实战项目

简化版

K-Means 优化非凸目标,初始中心会影响收敛到哪个局部最优。k-means++ 用与最近中心距离平方成比例的概率选新中心,通常比纯随机稳定,但仍应多次初始化并按惯性、稳定性和业务可解释性选择结果。

详细版

  • Lloyd 算法在分配与更新两步间迭代。
  • 目标函数单调不增但不保证全局最优。
  • 随机抽样可能把多个中心放进同一高密度区。
  • k-means++ 倾向让初始中心彼此分散。
  • n_init 应与数据规模和稳定性预算一起设置。

完整版教学

一、问题定义与核心直觉

第一次中心通常随机取样,之后计算每个点到最近已选中心的平方距离 D²,并按 D² 加权抽取。远离现有中心的区域更可能被覆盖,从而减少坏初始化。

更低 inertia 不总是更好的业务分群:极小簇或异常点可能吸引一个中心。应同时检查簇规模、重采样一致性和未来画像,而非只保留数值最小的一次。

二、机制与公式

J=sum_i ||x_i-mu_(z_i)||^2
P(select x_i)=D(x_i)^2/sum_j D(x_j)^2

Lloyd 的分配步在固定中心下最小化每点距离,更新步在固定分配下用均值最小化平方误差,因此目标单调不增;联合问题非凸,所以不同初始中心可能到达不同固定点。

三、带数字的推演

三次初始化的 inertia 为 1200、980、975,但后两次 ARI 仅 0.42,且 975 的方案产生 0.2% 极小簇。若业务要求稳定分群,可能选择 980 的受约束方案而非盲选 975。

这里后两次 inertia 只差 0.5%,而结构一致性与最小簇规模差异更大,说明不能把训练目标最小的一次自动当作可用分群。k-means++ 只改善起点分散程度,不替代稳定性与业务约束。

四、方案对比

方案优势代价或边界
随机初始化成本最低坏局部解概率高
k-means++通常收敛快且稳定仍有随机性与额外初始化成本
领域种子可注入已知原型可能固化人为偏见

五、工程执行流程

训练折缩放 -> 固定 K -> 多随机种子 k-means++ -> 记录 inertia/轮数
-> 对齐标签比较稳定性 -> 检查空簇和极小簇 -> 固化中心与预处理

n_init 越大,错过好起点的概率通常越低,但初始化和 Lloyd 迭代成本也近似累加。应记录最佳目标随重启次数的收益曲线,并在收益趋稳后选择预算,而不是固定照搬某个默认值。

六、边界条件与上线代价

高维空间距离集中会削弱 D² 选点优势;先做合适的表示或降维,往往比无限增加 n_init 更有效。

流式或大数据场景可用并行初始化和 MiniBatchKMeans,但必须记录抽样顺序与随机种子以复现中心。

关键判断:初始化决定 K-Means 从哪里下山:k-means++ 负责把起点分散,多次初始化负责降低偶然性。

七、常见误区与追问

  • 误区:K-Means 每次都得到同一结果。 非凸目标使初始化可能导向不同局部解。

  • 追问:k-means++ 如何选中心? 按到最近已选中心的平方距离加权抽样。

  • 误区:n_init=1 足够,因为用了 k-means++。 它降低风险但不消除随机性。

  • 追问:只看 inertia 可以吗? 还要检查稳定性、簇规模和业务画像。

  • 追问:如何复现? 保存随机种子、库版本、预处理和最终中心。

八、加强记忆

初始化决定 K-Means 从哪里下山:k-means++ 负责把起点分散,多次初始化负责降低偶然性。验收不能只报最小 inertia,还要报告结果是否稳定、是否产生无意义小簇。