一句话定义:高斯混合模型(Gaussian Mixture Model, GMM)假设手上的数据是由若干个高斯分布(正态分布)混合生成的,每个样本以一定概率属于每一个簇,而不是被硬性分到唯一一个簇里。
高斯分布就是那条钟形曲线,由均值(中心在哪)和方差/协方差(胖瘦、朝向)决定。GMM 的思路是:这堆数据点可能来自 K 个不同的"生成源",每个源都按自己的钟形曲线往外吐点,我们看到的只是它们混在一起的结果。
打个比方:城市里有三家奶茶店在发传单,A 店偏爱地铁口、B 店偏爱写字楼、C 店偏爱学校,每家撒的范围大小也不一样。你只捡到地上散落的传单,不知道谁发的。GMM 做的事就是反推出这三家店各自的位置和撒点范围,并对每张传单给出"它是 A 店发的概率 0.7、B 店 0.2、C 店 0.1"。
算法怎么转?常用做法是期望最大化(Expectation-Maximization, EM),两步循环:E 步按当前参数算每个点属于各簇的概率(叫"责任度"responsibility);M 步拿这些概率当权重,重新估计每个簇的均值和协方差。像两个人来回对账,一轮轮逼近稳定。它通常只能找到局部最优,所以实践中常多跑几次取最好的,或用 K-Means 的结果做初始化。
和 K-Means 的区别:
| 维度 | K-Means | GMM |
|---|---|---|
| 归属方式 | 硬分配,一个点只属于一个簇 | 软分配,输出属于各簇的概率 |
| 簇的形状 | 默认球形、大小相近 | 可以是任意朝向的椭球,大小可不同 |
| 判断依据 | 到中心的距离 | 概率密度(考虑了方差/协方差) |
| 输出 | 簇标签 | 标签 + 置信度 |
K-Means 其实可以看作 GMM 的特例:当所有簇协方差相同且趋于零时,软分配退化成"谁近算谁的"。
对从业者的意义:GMM 是"概率版聚类",天然带不确定性,适合需要置信度的场景——用户分群后判断"要不要打扰这个人"、异常检测(密度极低的点)、语音识别里经典的声学建模、以及当作密度估计工具给数据拟合一个概率分布。
对普通人的意义:你被推荐系统打标签时,往往不是被简单归到一类,而是"60% 健身爱好者、30% 美食党"。这种不把话说死的分法更贴近真实人群,GMM 就是它的数学原型。
一句提醒:GMM 假设数据来自若干高斯分布的叠加,若真实分布严重偏斜或长尾,效果会打折;簇数 K 一般要自己定,可借助 BIC 一类模型选择准则辅助,具体实现细节以官方文档为准。
