Skip to content

思路与直觉

本章目标

  1. 用直观方式理解 EM 算法的核心思路——"猜分属,再调整"的循环迭代。
  2. 理解软赋值(责任)与硬赋值(标签)的直觉差异——概率归属 vs 确定归属。
  3. 通过与 KMeans 的对比,建立 GMM 在聚类谱系中的定位——概率生成模型。

重点方法与概念速览

名称类型作用
鸡生蛋蛋生鸡核心困境知道样本属于哪个分量 → 可以算分量参数;知道分量参数 → 可以判断样本属于哪个分量
E 步(责任分配)迭代操作"在当前参数下,这个点大概是哪个分量生成的?"——给每个点对各分量的归属概率
M 步(参数更新)迭代操作"按这个归属概率,每个分量的最佳中心在哪?椭圆该长什么样?"
软赋值核心特征每个点对 3 个分量各有归属概率——γik[0,1],和为 1
对数似然下界收敛保证每次迭代后"数据在当前参数下的概率"都在上升——不会变差

1. 为什么需要 EM

假设你要把 500 个点分成 3 个椭圆簇——但你没有标签。如果你知道每个点的分量归属:

可以很容易算出每个分量的中心(加权平均)和形状(加权协方差)。

反过来,如果你知道 3 个分量的中心和椭圆形状:

可以很容易算出每个点属于哪个分量(看它在哪个椭圆的正下方)。

但两样都没有——这就是"鸡生蛋蛋生鸡"。

EM 的解决思路:先猜参数 → 凭参数猜归属 → 凭归属更新参数 → 凭新参数重新猜归属 → ... 直到稳定。

2. 用"分类垃圾"理解 EM

想象你把 500 颗不同颜色的珠子混在一起,想让机器自动按颜色分成 3 堆:

  1. 先乱猜 3 堆的中心和范围(初始化 μkΣk
  2. 看每颗珠子离哪堆更近(E 步——但 EM 不是"最近的堆",而是"最可能来自哪堆"——考虑到每堆的大小和形状)
  3. 重新计算每堆的中心和范围(M 步——加权平均,因为有些珠子可能"有点属于堆 A,也有点属于堆 B")
  4. 重复 2-3 步直到每堆的中心不再移动

理解重点

  • EM 比 KMeans 多考虑了形状——如果一个簇是细长的椭圆,靠近椭圆长轴末端的点可能离另一个簇的球心更近,但它实际上属于这个椭圆簇。
  • 这就是马氏距离 vs 欧氏距离的核心差异——EM 衡量的是"在椭圆坐标系下的距离"。

3. 软赋值 vs 硬赋值的直觉

KMeans(硬赋值)

"这个点离 A 最近,它就是 A 的人,跟 B 和 C 一点关系都没有。"

EM(软赋值)

"这个点 70% 可能是 A 的,20% 可能是 B 的,10% 可能是 C 的——但我不确定,所以三个分量都参考它,只是权重不同。"

理解重点

  • 软赋值在边界模糊处最有价值——两个椭圆重叠区域的点,KMeans 可能武断地划给一方,EM 会"分担责任"。
  • model.predict_proba(X) 返回的就是这个软赋值矩阵——(500, 3),每行和为 1.0。
  • 不确定性 = 1maxkγik——值越大说明这个点"在分量间摇摆不定"。

4. E 步和 M 步的直觉对比

步骤直觉输入输出
E 步"在当前参数下,猜测每个点属于各分量"当前 μkΣkπk责任矩阵 γik
M 步"根据每个点的分量归属,重新计算参数"责任矩阵 γikμkΣkπk

理解重点

  • E 步用的是当前的模型参数——"模型现在长这样,你说这些点是谁的?"
  • M 步用的是 E 步的输出——"既然你们觉得这些点大概是 A 的,那 A 的中心应该在...这个位置,椭圆应该长...这个形状。"
  • 每次迭代,p(数据参数) 都在增加——EM 永远不会"变差"。

5. 用"猜考试分数"理解协方差类型

3 个班的学生考了两门试(数学和物理):

  • spherical:假设每个班的数学和物理分数独立且方差相同——等价于 KMeans
  • diag:假设每个班的数学和物理分数独立但方差不同——横平竖直的椭圆
  • full:每个班的数学和物理分数可能相关(数学好的物理也好)——任意方向的椭圆

当前数据使用 full——因为分量 1 在 x1 方向更宽(数学分差大),分量 2 在 x2 方向更宽(物理分差大)。

6. EM vs KMeans 直觉对比

维度KMeansEM (GMM)
核心问题如何把点分成 K 个球形簇?这些点最可能由哪 K 个椭圆高斯生成?
赋值硬——每个点只属于一个簇软——每个点对各分量有归属概率
距离度量欧氏距离(到质心)马氏距离(考虑协方差的加权距离)
簇形状圆形(各向同性)任意椭圆(各向异性)
不确定性无——每个点只有一个标签有——边界模糊的点有混合归属
输出labels_(整数标签)labels_predict_proba()(概率归属)
极限关系KMeans 是 GMM 在 spherical 协方差 + 硬赋值下的极限

理解重点

  • GMM 是 KMeans 的"概率升级版"——保持了"把点分组"的目标,但增加了椭圆形状和软归属。
  • 损失:GMM 的参数更多(full 下每个分量要估计 3 个协方差参数),在小样本上可能过拟合。
  • 收益:GMM 能正确拟合非球形簇,并提供归属概率的置信度。

可视化

聚类分布图

常见坑

  1. 把 EM 当成 KMeans 的"精确版"——EM 收敛更慢、对初始化更敏感,不保证全局最优。
  2. 认为软赋值"更高级所以总是更好"——如果数据确实是球形等权簇(make_blobs),GMM 的全协方差反而包含冗余参数。
  3. 忽略协方差类型的含义——在 spherical 下 GMM 退化为 KMeans 的概率版,椭圆簇建模能力为零。
  4. 期待 EM 每次收敛到相同结果——EM 是局部优化,不同初始化的结果可能不同。

小结

  • EM 的直觉核心是"猜-改"循环:用当前参数猜归属(E 步)→ 用归属更新参数(M 步)→ 重复。每步保证数据似然不降。
  • 软赋值是 EM 与 KMeans 最核心的直觉差异——概率归属允许"一个点同时部分属于多个分量"。
  • 全协方差(full)使 GMM 能拟合任意方向的椭圆——这是相对于 KMeans 球面簇假设的最大优势。