什么是 K-Means 聚类?

K-Means 聚类是把每个向量分配给 `k` 个质心之一,再把质心更新为所属成员均值,以降低簇内平方欧氏距离的划分算法。

快速了解

创建时间1967 年由 James MacQueen 命名;Lloyd 方法于 1982 年发表
规范文档官方规范

工作原理

让目标函数与欧氏均值几何保持一致

K-Means 最小化样本到算术均值的平方欧氏距离,因此偏好规模接近、近似凸形且各向同性的分组。如果保留均值更新却把平方欧氏距离随意换成其他 Metric,算法就不再优化同一目标;此时应选择兼容的 Medoid、Spherical 或其他聚类方法。

控制初始化、空簇与停止条件

Lloyd 发表的量化方法给出了交替分配与更新结构。生产运行还需声明初始化器、多次重启、确定性 Seed、最大迭代次数、Tolerance 和空簇策略。当前 scikit-learn 文档还提示,提前停止时报告的质心可能与最后一次 Assignment 不完全一致。

使用 Inertia 之外的证据选择 k

随着 k 增大,Inertia 总是不增,因此仅最小化它会偏向过度拆分。应在留出数据或重采样上比较稳定性、轮廓系数等诊断、簇规模分布、专家审核和下游结果。生产比较前还要冻结特征模型、归一化、权重、Seed 策略与 Cluster Label 映射。

主要特点

  • 输出恰好 k 个互不重叠的硬聚类
  • 优化簇内平方欧氏距离
  • 交替执行最近质心分配与算术均值更新
  • 收敛到依赖初始化的局部固定点
  • 可用最近质心高效分配新向量
  • 对缩放、离群点、空簇和非凸几何敏感

常见用途

  1. 为文档或 Embedding 分群建立快速基线
  2. 执行向量量化与 Codebook 构建
  3. 在紧致欧氏簇合理时对客户或物品分组
  4. 用代表性质心压缩大规模样本
  5. 在人工主题命名前比较稳定候选划分

示例

loading...
Loading code...

常见问题

K-Means 优化什么目标函数?

它最小化每个样本到所属簇均值的平方欧氏距离之和,也称簇内平方和或 Inertia。该目标不是普通距离之和,也不能在保留均值更新时随意替换为任意 Metric。

K-Means 一定能找到全局最优解吗?

不能。Lloyd 交替更新会单调降低或保持 Inertia,直至局部固定点,但不同初始质心可能到达不同结果。应声明初始化器,执行多次重启,固定 Seed 并报告稳定性。

K-Means 的簇数 k 应如何选择?

把 `k` 当作模型选择参数,在预先声明的范围内组合多项诊断和重采样稳定性,再用未参与选择的证据确认可解释性与下游价值。Inertia 总是偏好更多簇,不能单独决定 `k`。

为什么 K-Means 容易受离群点或不等规模簇影响?

算术均值与平方距离会放大远端样本影响,并隐含 Voronoi 形、近似各向同性分组。离群点、细长结构、不同密度和严重规模失衡都可能移动质心或拆错结构。

K-Means 训练后能分配新记录吗?

可以。冻结模型可把兼容新向量分配给最近质心,但向量化器、维度、缩放、质心版本、距离约定和拒绝策略必须保持不变;重新训练还可能改变 Cluster ID 编号。

相关术语

相关文章