K-Means Clustering(K 均值聚类)

就是你先随机放 K 个『旗子』,然后让每个数据点站到最近的旗子那里,再把旗子挪到它管辖那群点的中心,反复这样做直到旗子不再动为止。

亦作、亦称:K 均值聚类 · K-Means · k-means · K均值聚类 · K 均值

K 均值聚类是无监督学习领域最具代表性的算法,以简洁高效著称,可将大规模数据自动分组。从图像压缩到用户分群,它是数据探索与特征工程的核心工具之一。

概述

K 均值聚类是无监督学习中应用最广泛的分区式聚类算法。

  • 核心目标:将 N 个样本分配到预定义的 K 个簇,最小化簇内平方和(Within-Cluster Sum of Squares,WCSS)
  • 无需标签:属于无监督学习,不依赖人工标注,直接从数据结构中发现模式
  • 硬分配:每个样本恰好属于且仅属于一个簇(区别于软分配的高斯混合模型)
  • 迭代收敛:通过交替执行「分配」与「更新」两步,保证目标函数单调不增,有限步内必然收敛至局部最优

工作原理

K-Means 算法(即 Lloyd 算法)由以下核心步骤组成,循环直至质心不再移动。

  • 初始化:从数据中随机选取 K 个点作为初始质心(或使用 K-Means++ 智能初始化)
  • 分配步骤(E 步):将每个样本分配给距离最近的质心所属的簇,距离通常采用欧氏距离
  • 更新步骤(M 步):将每个簇的质心重新计算为该簇所有成员样本的坐标均值
  • 收敛判定:若质心位置变化量低于阈值或达到最大迭代次数,则停止
  • 目标函数:J = Σ Σ ‖x − μk‖²,其中 μk 为第 k 个簇的质心

主要变体

K-Means 衍生出多种改进变体,以解决初始化敏感、规模限制等问题。

  • K-Means++(2007):Arthur & Vassilvitskii 提出,以加权概率选取初始质心,使结果更稳定,理论上保证 O(log K) 近似比
  • Mini-Batch K-Means(2010):Sculley 提出,每次迭代仅使用随机小批量样本,大幅提速,适合亿级数据集
  • K-Medoids(PAM):质心限定为实际样本点,对离群值更鲁棒
  • Bisecting K-Means:自顶向下递归二分,适合层次化聚类需求
  • 球形 K-Means:使用余弦相似度代替欧氏距离,适合文本等高维稀疏数据

应用场景

K 均值聚类在工业界和学术界均有广泛的实际应用。

  • 图像分割与压缩:将像素按颜色聚为 K 类,实现色彩量化(vector quantization)或语义区域分割
  • 客户分群:根据购买行为、RFM 指标等将用户聚类,支持精准营销
  • 文档聚类:对 TF-IDF 或词嵌入向量聚类,辅助新闻分类、主题发现
  • 异常检测:距所有质心均较远的样本可视为潜在异常点
  • 推荐系统:对用户或物品嵌入向量聚类,降低检索空间(近似最近邻)
  • 多模态检索:对图文特征向量预聚类,加速大规模向量索引(如 FAISS IVF)

与相邻概念的区别

K-Means 常与其他聚类方法对比,了解边界有助于选型。

  • vs DBSCAN:DBSCAN 基于密度,能发现任意形状的簇并自动剔除噪声点,无需指定 K;K-Means 假设球形簇,需预设 K
  • vs 层次聚类:层次聚类产生树状结构(dendrogram),可事后剪枝;K-Means 直接分区,速度更快
  • vs 高斯混合模型(GMM):GMM 是软分配,每个样本有属于各簇的概率;K-Means 为 GMM 的硬分配极限情形(协方差矩阵为球形等方差时)
  • vs 谱聚类:谱聚类利用图拉普拉斯特征,可处理非凸簇,但计算复杂度更高

局限与误区

K-Means 简单高效,但存在若干重要限制,需在实践中注意。

  • K 必须预先指定:算法本身不能自动确定最优 K,需借助肘部法则、轮廓系数或 Gap Statistic 辅助决策
  • 初始化敏感:随机初始化可能导致局部最优;建议多次运行取最优或使用 K-Means++ 初始化
  • 假设簇为球形:对细长形、月牙形或密度不均的簇效果较差
  • 对离群值敏感:极端异常值会显著拉偏质心位置;可预先做异常值处理或改用 K-Medoids
  • 误区:认为 K-Means 的收敛结果即全局最优——实际上仅保证局部最优,不同初始化可能给出差异较大的结果

发展脉络

K-Means 算法跨越半个多世纪持续演进,至今仍是聚类领域的基准方法。

  • 1956 年:Hugo Steinhaus 提出将多维数据分组以最小化组内平方和的构想,奠定理论雏形
  • 1957 年:Stuart Lloyd(Bell 实验室)推导出迭代分配-更新算法,用于脉冲编码调制(PCM)研究,1982 年正式发表于 IEEE Transactions on Information Theory
  • 1965 年:E. W. Forgy 独立提出相同算法,并率先以聚类视角描述
  • 1967 年:James MacQueen 正式命名「K-Means」并系统化描述,发表于第 5 届伯克利统计研讨会
  • 2007 年:Arthur & Vassilvitskii 提出 K-Means++,在理论上证明对初始化的改进效果
  • 2010 年:Sculley 提出 Mini-Batch K-Means,将算法扩展至互联网规模数据
  • 2010 年代至今:K-Means 与深度学习结合(如 DeepCluster、VQ-VAE 的向量量化层),在无监督表示学习中持续发挥作用

常见误解

日常交流中容易听到的简化说法,未必准确,但能帮助理解误解从何而来。

  • 「就是你先随机放 K 个『旗子』,然后让每个数据点站到最近的旗子那里,再把旗子挪到它管辖那群点的中心,反复这样做直到旗子不再动为止。」
  • 「很多人以为 K-Means 能自动决定分几组,其实 K 是你事先指定的,选错 K 结果会很差。」
  • 「K-Means 假设簇是球形的,遇到细长形或弧形的数据群体它就会『失手』,这时应该考虑 DBSCAN 或高斯混合模型。」

相关术语

和本术语关联紧密的其他词条,便于串联理解。

延伸阅读

从知识库精选 3 篇文章,帮助深入理解该术语。

  1. 1

    K-Means:无监督聚类基础

    从 K 值选择到 K-Means++,掌握最基础的聚类算法

  2. 2

    DBSCAN:基于密度的聚类

    从密度reachable到噪声点识别,掌握不需要预设K的聚类算法

  3. 3

    多模态检索与推荐

    从向量数据库到跨模态检索,掌握多模态检索的核心技术

外部参考

维基百科:查看「K-Means Clustering」词条

本页内容为本站原创撰写;维基百科链接仅作延伸参考。