高斯混合模型(GMM)是什么?和 K-means 有什么关系?
简化版
高斯混合模型(GMM) 假设数据由多个高斯分布(正态分布)混合生成,每个高斯对应一个簇。聚类就是估计出这些高斯的参数(均值、协方差、权重),并算出每个样本属于各个簇的概率——所以 GMM 是软聚类(每点有隶属概率),而 K-means 是硬聚类(每点只属一个簇)。参数用 EM 算法迭代求解:E 步算每个点属于各高斯的概率(软分配),M 步用这些概率加权更新各高斯的参数,交替直到收敛。相比 K-means:GMM 能拟合椭圆形、大小不同的簇(因为有协方差),给出概率隶属,更灵活;但更复杂、更慢、也需指定簇数、可能陷局部最优。K-means 可由等权、共同球形协方差的 GMM 在方差趋小并采用硬分配时得到。
详细版
GMM 模型:
p(x) = Σₖ πₖ · N(x | μₖ, Σₖ)
πₖ = 第 k 个高斯的混合权重(Σπₖ=1)
N(x|μₖ,Σₖ) = 第 k 个高斯分布(均值 μₖ、协方差 Σₖ)
EM 算法求解:
E 步(期望):算每个点 x 属于第 k 个高斯的后验概率(责任 γₖ)
γₖ(x) = πₖN(x|μₖ,Σₖ) / Σⱼ πⱼN(x|μⱼ,Σⱼ)
M 步(最大化):用 γ 加权更新 πₖ、μₖ、Σₖ
交替 E、M 直到似然收敛
GMM vs K-means:
| K-means | GMM | |
|---|---|---|
| 聚类类型 | 硬聚类(属一个簇) | 软聚类(概率隶属) |
| 簇形状 | 球形(等方差) | 椭圆形(各自协方差) |
| 簇大小 | 相近 | 可不同 |
| 求解 | Lloyd 迭代 | EM 算法 |
| 关系 | GMM 的特例(球形+硬分配) | 更一般 |
完整版教学
一、GMM 的核心假设:数据是多个高斯「混」出来的
GMM(Gaussian Mixture Model)用概率生成模型的视角看聚类:它假设整份数据是由 K 个高斯分布混合生成的——每个高斯分布代表一个簇,有自己的中心(均值 μ)、形状(协方差 Σ)和占比(权重 π)。生成一个样本的过程是:先按权重 π 随机挑一个高斯,再从这个高斯里采样一个点。
于是聚类问题变成:给定这些数据点,反推出是哪 K 个高斯、参数各是多少,以及每个点最可能来自哪个高斯。这就是 GMM 要估计的东西。
二、软聚类:每个点有「隶属概率」
和 K-means「每个点硬性归到唯一一个簇」不同,GMM 是软聚类——它算出每个点属于每个簇的概率(叫「责任 responsibility」)。比如某个点可能「70% 属于簇 A、30% 属于簇 B」。
这更符合现实:边界附近的点本就模棱两可,硬分给某一簇会丢失信息。软聚类保留了这种不确定性,还能识别「这个点归属很模糊」。需要最终硬标签时,取概率最大的簇即可。
三、椭圆形簇:协方差带来的灵活性
K-means 用欧氏距离到中心,隐含假设簇是各向同性的球形、大小相近。GMM 因为每个高斯有自己的协方差矩阵 Σ,能表达:
- 椭圆形簇(协方差非对角/各向异性)——簇可以沿某方向拉长。
- 大小不同的簇(协方差有大有小)。
- 不同方向、不同扁平程度的簇。
所以 GMM 比 K-means 更灵活,能拟合更复杂的簇形状——这是它的主要优势之一。
四、EM 算法:怎么求出这些高斯参数
GMM 的参数(各 πₖ、μₖ、Σₖ)用 EM 算法(期望最大化) 迭代求解。难点在于「点属于哪个高斯」是隐变量(未知),EM 用「猜隐变量 → 更新参数」交替逼近:
E 步(Expectation,期望)——固定当前参数,算每个点属于各高斯的后验概率(责任 γ):
γₖ(x) = πₖ·N(x|μₖ,Σₖ) / Σⱼ πⱼ·N(x|μⱼ,Σⱼ)
(这个点由第 k 个高斯生成的概率,软分配)
M 步(Maximization,最大化)——固定责任 γ,用它加权更新每个高斯的参数:
μₖ = Σ γₖ(x)·x / Σ γₖ(x) (责任加权的均值)
Σₖ = 责任加权的协方差
πₖ = Σ γₖ(x) / N (该高斯的平均责任)
交替 E、M 步,在精确 E/M 更新且数值正常时,每轮观测数据对数似然不减,通常迭代到收敛阈值。直观理解:E 步「按当前高斯软分配点」,M 步「按软分配重新拟合高斯」,越来越吻合数据。
五、GMM 和 K-means 的关系——K-means 是特例
这是高频考点:K-means 可以看作 GMM 的一个特殊、简化的情形。
如果给 GMM 加上限制:
- 所有高斯的协方差都是相同的球形(Σ = σ²I),
- E 步的软分配退化成硬分配(每个点 100% 属于最近的那个高斯、其余为 0),
那么 GMM 的 EM 就退化成了 K-means 的两步迭代:
- E 步(硬分配)↔ K-means 的分配步(点归到最近中心)。
- M 步(更新均值)↔ K-means 的更新步(中心取均值)。
所以:K-means ≈ 共同球形协方差趋小 + 硬分配的受限 GMM。GMM 是更一般的框架——放开协方差得到椭圆簇、放开硬分配得到软聚类。理解这层关系,就把两个算法统一起来了。
六、优缺点与常见追问
优点:软聚类(概率隶属)、能拟合椭圆/不同大小的簇、有概率模型基础(可算似然、做模型选择)。
缺点:仍需指定簇数 K、EM 依赖初始化、可能陷局部最优(常用 K-means 结果初始化)、计算比 K-means 复杂慢、协方差参数多(高维时协方差矩阵难估,可能过拟合,需正则/限制协方差类型)、假设数据是高斯混合(不符时效果差)。
常见追问:
- GMM 和 K-means 区别? GMM 软聚类、椭圆簇、EM 求解;K-means 硬聚类、球形簇;K-means 是 GMM 的特例。
- EM 会收敛到全局最优吗? 不会——似然非凸,只保证趋向局部驻点,且协方差退化时似然可能无界,依赖初始化(常用 K-means 初始化 + 多次重启)。
- GMM 怎么定簇数? 用 BIC / AIC 等信息准则(似然 + 复杂度惩罚)选 K,比 K-means 的肘部法更有原则。
- 软聚类有什么好处? 保留归属不确定性、能表达重叠簇、能识别模糊样本。
- GMM 要标准化吗? 一般也需要,尤其协方差被限制为球形/对角时。
七、算一次责任度并看清 EM 的风险
设两个高斯在样本 x 处的密度分别为 0.20、0.10,混合权重为 π₁=0.6,π₂=0.4。未归一化贡献是 0.12 和 0.04,因此 E 步责任度为 γ₁=0.12/0.16=0.75、γ₂=0.25。这不是随口给的“相似度”,而是当前参数下由贝叶斯公式得到的后验分量概率。
N_k = Σ_i γ_ik
μ_k = (1/N_k) Σ_i γ_ik x_i
Σ_k = (1/N_k) Σ_i γ_ik (x_i-μ_k)(x_i-μ_k)^T
π_k = N_k / n
| covariance_type | 参数量与形状 | 典型取舍 |
|---|---|---|
| spherical | 每分量一个方差 | 最省参数,只表球形 |
| diag | 每分量每维一个方差 | 高维常用,不表相关性 |
| tied | 所有分量共用完整协方差 | 可表相关性但形状共享 |
| full | 每分量完整协方差 | 最灵活,也最易估计不稳 |
若某分量只“吞掉”极少样本,协方差可能接近奇异,使训练似然异常增大;实践要加协方差正则、设置重启并检查收敛。EM 每轮不降低当前观测数据似然,但只保证走向局部驻点,不能保证全局最优。
记忆钩子:E 步分责任,M 步按责任重估;软分配带来灵活性,也带来局部最优和协方差退化风险。
八、常见误区与追问
- 误区:K-means 与 GMM 在任何设置下完全等价。 K-means对应等权、共同球形协方差趋于很小且采用硬分配的受限情形。
- 误区:EM 的似然单调不减就说明找到全局最优。 非凸似然仍有局部极值、鞍点和退化解。
- 追问:为什么要用 log-sum-exp? 高维高斯密度很小,直接相乘易下溢,通常在对数域归一化责任度。
- 追问:BIC 为什么能选 K? 它在拟合似然之外按参数量和样本数惩罚复杂度,但仍依赖模型假设。
- 追问:分量编号有业务含义吗? 没有,交换分量标签不改变混合分布,这叫标签置换不识别性。
九、加强记忆
GMM 假设数据由 K 个高斯混合生成(每个高斯=一个簇,有权重 π、均值 μ、协方差 Σ),聚类就是估参数并算每个点属于各簇的概率——所以是软聚类(K-means 是硬聚类)。因每个高斯有协方差,GMM 能拟合椭圆形、大小不同的簇(比 K-means 灵活)。求解用 EM:E 步算每点属各高斯的后验概率(责任 γ,软分配),M 步用 γ 加权更新 π、μ、Σ,交替到似然收敛。关键关系:K-means ≈ 共同球形协方差趋小 + 硬分配的受限 GMM 特例(E 步硬分配↔分配步、M 步更新均值↔更新步)。缺点:需指定 K、EM 陷局部最优(用 K-means 初始化)、更复杂慢、假设高斯;定 K 可用 BIC/AIC。