核心要点

  • 说清两步迭代:将每个样本分配到最近质心,再用各簇均值更新质心,直到收敛。

  • 强调需预先指定 k,且结果依赖初始化,必须用 k-means++ 或多次随机重启。

  • 指出特征需标准化(量纲敏感),并说明只能发现凸形/球形、大小相近的簇。

  • 会用肘部法或轮廓系数选 k,区别于 DBSCAN 等无需指定簇数的方法。

标准回答

算法流程

K-means 是一种基于距离的无监督聚类,目标是最小化簇内平方误差(SSE)。流程:

  1. 随机选取 k 个初始质心;
  2. 分配:把每个样本划到欧氏距离最近的质心;
  3. 更新:用各簇样本的均值作为新质心;
  4. 重复 2-3 直到质心不再变化或达到迭代上限。

它本质是对 SSE 做坐标下降,保证收敛,但只收敛到局部最优。

局限

  • 需人为指定 k;结果对初始质心敏感,故用 k-means++ 让初始点尽量分散;
  • 对特征量纲敏感,须先标准化;
  • 基于均值与欧氏距离,假设簇是球形、大小相近,对非凸簇、不同密度或离群点效果差;
  • 离群点会显著拉偏质心。

常见误区

⚠️ 常见踩坑

别说「K-means 能自动确定簇数」——k 必须预设;也别忽略标准化,量纲差异会让大尺度特征主导距离。

追问

追问 1k-means++ 解决了什么问题?

普通随机初始化容易让多个质心落在同一簇,导致收敛到差的局部最优。k-means++ 按与已选质心距离的平方为概率依次挑初始点,使其分散,显著降低 SSE 并加快收敛。

追问 2如何选择 k?

常用肘部法(画 SSE 随 k 的曲线,找下降趋缓的拐点)和轮廓系数(衡量簇内紧凑与簇间分离,取最大值对应的 k)。也可结合业务先验或 Gap Statistic。

追问 3K-means 和 DBSCAN 有何区别?

K-means 需指定 k、找球形簇、对离群点敏感;DBSCAN 基于密度,无需指定簇数,能发现任意形状簇并天然识别噪声点,但对密度差异大的数据和参数 eps 较敏感。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。