知识点深化 · K-Means 聚类
K-Means 聚类:把一堆点自动分成 K 堆,看谁离哪个中心近
前面的 SVM、KNN 都有标签(监督学习),K-Means 是无监督学习——没人告诉你该分几类、每类是什么,只有一堆散点。它的思路极朴素:先放 K 个中心点,让每个点归到离它最近的中心;再把中心挪到这堆点的平均值处;反复挪,直到中心不动。"K"是分几堆(要自己选),"Means"是中心取平均。这一页把迭代步骤、K-Means++、肘部法则、轮廓系数讲透。
① 小白第一课怎么学(4 步走,约 50 分钟)
聚类没有标准答案,重点是看懂"中心来回挪"的过程:
1看图建立直觉(10 分钟)
读第②③部分:理解"分配→更新→再分配"像老师挪办公室的过程。
2记算法步骤(13 分钟)
背第④部分:四步迭代、K-Means++、肘部法则、轮廓系数。
3做例题(15 分钟)
精读第⑤部分,手算一次质心更新。
4刷题+纠错(12 分钟)
做第⑦⑩部分,错题回第⑥部分找原因。
本课小目标学完你要能:① 口述 K-Means 四步迭代;② 解释为什么初始化很敏感、K-Means++ 怎么改进;③ 用肘部法则选 K;④ 说清它的优缺点和适用数据形状。
② 一图看懂:K-Means 全地图
读法:中心 K-Means,核心循环是"分配点→更新质心"两步交替直到收敛;旁支是怎么选 K、怎么初始化;下方是优化目标(SSE 最小)和它的天生局限。
③ 先认识它:像班主任给学生排座位
想象操场上散着一堆学生,老师要把他们分成 K=3 个小组。
第一步:老师随便在场上放 3 面小旗子(初始质心)。
第二步:每个学生站到离自己最近的那面旗子下面——这是"分配"。
第三步:旗子挪到本组学生的平均位置——这是"更新质心"。
旗子挪了,学生就该重新站队;队变了,旗子又得挪。如此反复,直到旗子不再移动、学生不再换组,就聚好了。
它在优化什么每挪一次,都让"每个点到自己组中心的距离平方和(SSE)"变小。K-Means 本质是在最小化簇内平方和——让每团内部尽量紧凑。但注意:它只保证找到局部最优,不保证全局最优,所以初始旗子放哪很关键。
④ 完整体系与算法表
K-Means 四步迭代(伪代码)
K-Means 算法
1. 选定 K,初始化 K 个质心 μ₁…μₖ
2. 分配:每个点 xᵢ 归入最近质心:c(i)=argmin ‖xᵢ−μⱼ‖²
3. 更新:μⱼ = 第 j 簇所有点的坐标平均值
4. 重复 2-3,直到质心几乎不变(收敛)
优化目标
最小化簇内误差平方和 SSE(惯性)
SSE = Σⱼ Σ_{xᵢ∈簇ⱼ} ‖xᵢ − μⱼ‖²
怎么选 K:肘部法则 + 轮廓系数
| 方法 | 怎么做 | 怎么读 |
| 肘部法则 | 画 K 从 1 增大时 SSE 的下降曲线 | 曲线拐弯的"肘部"即最佳 K(再增 K 下降变缓) |
| 轮廓系数 | 综合考虑簇内紧密度 a 与簇间分离度 b | 越接近 1 越好,范围 [−1,1] |
轮廓系数 s = (b − a)/max(a, b)
a=点到同簇其他点平均距离;b=点到最近异簇平均距离。s 越接近 1 聚类越好。
K-Means++ 在干嘛随机放初始质心时,可能几个质心挤在同一团,结果收敛到很差的局部最优。K-Means++ 让第一个质心随机选,之后每个新质心优先选离已有质心远的点——保证初始 K 个点分散开,结果更稳、收敛更快。
⑤ 用法场景与典型例题
例1(基础·质心更新)某簇现有三个点 (0,0)、(2,0)、(1,3),求更新后的新质心。
质心坐标 = 各坐标分别取平均。
① x 平均 = (0+2+1)/3 = 1;y 平均 = (0+0+3)/3 = 1。
答案:新质心 μ = (1, 1)。
例2(选 K·肘部法则)画 SSE-K 曲线:K=1 时 SSE 很大,K=2 骤降,K=3 再降,K=4、5 下降明显变缓。大概选几?
找曲线"拐弯"的那个点。
① K=1→2→3 都在大幅下降,说明合并的簇被有效拆开了。
② K=3 之后下降变缓(肘部出现),说明再加簇带来的收益已经不大。
答案:选 K=3(肘部位置)。
例3(局限·形状)数据是两个互相缠绕的月牙形簇,K-Means 能分好吗?
K-Means 默认把点归到最近质心,天然只能切出"球状"的团。
① K-Means 的决策边界是 Voronoi 式的直线分割,只能分出凸的、近球状的簇。
② 月牙形互相缠绕时,直线切不开,K-Means 会切错。
答案:分不好,应改用 DBSCAN 等能处理任意形状的聚类。
K-Means 优缺点速记优点:简单、快、可扩展到大数据;缺点:要自己定 K、对初值敏感(多跑几次取最好)、只认球状簇、对异常值敏感、特征必须归一化。
⑥ 中国学生高频错误诊断(4 条)
错误 1:以为 K-Means 结果唯一它对初始质心敏感,不同初值可能分出不同结果。工程上要跑很多次(n_init),取 SSE 最小的那次。
错误 2:不归一化就聚类和 KNN 一样,基于距离。量纲大的特征主导"远近",聚类结果被大尺度特征绑架。先标准化再聚。
错误 3:以为 K 越大越好K 增大 SSE 必然下降,K=n 时每个点自己一簇 SSE=0——这没有意义。要用肘部法则/轮廓系数找拐点。
错误 4:把聚类结果当"正确答案"聚类是无监督,没有唯一正确标签,只衡量"簇内紧不紧、簇间分不分得开"。业务还要看簇是否可解释。
⑦ 考点与真题演练(4 题)
考点分布
| 考法 | 出题形式 | 应对 |
| 迭代步骤 | 排序分配/更新 | 先分配后更新,交替收敛 |
| 选 K | 肘部法则选拐点 | 下降变缓处 |
| 初始化 | K-Means++ 好处 | 初始质心分散 |
| 局限 | 什么形状分不好 | 非球状/缠绕簇 |
基础真题1. K-Means 聚类中,每个数据点被分配给哪个簇,依据是?
中档真题2. 用肘部法则选 K 时,最佳 K 通常选在?
中档真题3. K-Means++ 相比随机初始化质心,主要改进是?
拔高真题4. 下列哪种数据分布,K-Means 通常聚类效果最差?
⑧ 必背公式卡
分配:c(i) = argmin ‖xᵢ − μⱼ‖² 点归最近质心
更新:μⱼ = (1/|Cⱼ|) Σ xᵢ 质心取组内平均
目标:SSE = Σⱼ Σ_{xᵢ∈Cⱼ} ‖xᵢ−μⱼ‖² 簇内平方和最小
收敛:质心不再移动、点不再换组 停止迭代
选 K:肘部法则找拐点;轮廓系数越近 1 越好 s=(b−a)/max(a,b)
初始化:K-Means++ 让初始质心分散 多跑取最优
局限:只认球状簇、对初值/异常值敏感、需先归一化 缠绕簇换 DBSCAN
⑨ 应用输出:用 K-Means 做用户分群
建模场景:电商用户分群(做精准营销)
有 10 万用户,特征是(月消费额、购买频次、浏览时长),想自动分成几类做差异化运营。
· 第一步归一化:三个特征量纲差很大,先各自标准化。
· 第二步选 K:画肘部曲线,发现 K=4 是拐点(高消费高频/高消费低频/低消费高频/低消费低频)。
· 第三步聚类:用 K-Means++ 跑 n_init=10 次,取 SSE 最小结果。
· 第四步解读:给每个簇贴标签("土豪型""薅羊毛型"),设计不同优惠券策略。
口述解题思路训练合上书说:"K-Means 是无监督,先放 K 个质心,点归最近的,质心挪到平均位置,反复到不动;优化的是簇内 SSE;K 用肘部法则选;初始化用 K-Means++ 防坑;它只会切球状簇,缠绕形状换 DBSCAN。"能顺下来就真懂了。
⑩ 分层练习 18 题(基础 6 + 中档 6 + 拔高 6)
▍基础 6 题
基础1K-Means 是监督学习还是无监督学习?
无监督学习,数据没有标签。
基础2K-Means 中"K"指什么?
要聚成的簇(类)的个数,需人为指定。
基础3某簇点 (1,1)、(3,3),新质心是?
平均 = (2, 2)。
基础4K-Means 每次迭代分哪两大步?
分配点(归最近质心)+ 更新质心(取平均)。
基础5用什么曲线帮我们选 K?
肘部法则(SSE 随 K 变化的曲线,找拐点)。
基础6判断:K 越大 SSE 越小,所以 K 越大越好。
错。K=n 时 SSE=0 但毫无意义,要用肘部/轮廓系数找平衡点。
▍中档 6 题
中档7K-Means 为什么对初始质心敏感?
它只收敛到局部最优,初始质心不同可能落入不同局部最优,结果不同。
中档8K-Means++ 解决了什么问题?
让初始质心彼此分散,避免挤在一团导致差的局部最优。
中档9轮廓系数接近 1 说明什么?
簇内紧凑、簇间分离,聚类效果好。
中档10为什么聚类前要标准化?
K-Means 基于距离,大量纲特征会主导距离,必须归一化公平。
中档11SSE 是什么?
簇内误差平方和(惯性),K-Means 要最小化它。
中档12工程上为什么跑 n_init=10 次?
初值有随机性,跑多次取 SSE 最小的那次,降低坏初值影响。
▍拔高 6 题
拔高13K-Means 为什么怕异常值?
质心取平均,一个离群点会把质心拉偏,整簇被带歪。
拔高14球形簇效果好、月牙形簇效果差,根本原因?
它用最近质心(Voronoi 直线分割),决策边界是凸的、只能切球状簇。
拔高15某簇质心更新后位置不变,说明什么?
算法已收敛,可以停止迭代。
拔高16类别不平衡(某簇特别大)时 K-Means 会怎样?
大簇会"吃掉"邻近小簇,小团可能被吞并,需结合业务评估。
拔高17聚类结果没有标签真值,怎么客观评估好坏?
用轮廓系数、SSE、簇间距离等内部指标,并结合业务可解释性,而非准确率。
拔高18数据量上千万,K-Means 还合适吗?
合适。K-Means 复杂度近似 O(n·K·维度·迭代),线性可扩展,常用 Mini-Batch K-Means 加速。
⑪ 记忆口诀 + 7 天复习计划
三句口诀
① 放 K 个旗,点归最近旗。
② 旗挪到平均位,反复直到不挪窝。
③ K 选肘部别贪大,初值敏感多跑几把。
| 天 | 任务 | 自检 |
| 第 1 天 | 读②③,手画分配/更新两步 | 能口述四步迭代 |
| 第 2 天 | 背公式卡 + 做基础 1-6 | 手算质心不出错 |
| 第 3 天 | 做中档 7-12 + 重做错题 | 说清 K-Means++ |
| 第 4 天 | 做拔高 13-18 | 理解形状局限 |
| 第 5 天 | 做⑦真题 4 题 | 限时每题 2 分钟 |
| 第 6-7 天 | 合上书口述三句口诀,默写 SSE | 不看资料全默对 |
← 返回算法与AI总览