高斯混合模型与 EM 算法
一、直观理解:数据是若干“椭圆团”的随机拼盘
高斯混合模型(GMM)假设样本来自 个高斯分布的加权和:
每个分量是一个椭圆团(由协方差决定形状与方向), 是该团的混合比重。聚类时,看样本更可能来自哪个分量,得到软分配(责任度)。
参数未知时用 EM 算法:E 步估计“这个点有多大可能来自第 团”,M 步把责任度当权重更新 ,交替直到似然不再提升。
二、适用场景与优缺点
| 类型 | 说明 |
|---|---|
| 适用场景 | 簇呈椭圆;需要概率模型与软标签;密度估计;可接受中等计算量。 |
| 核心优点 | 比 K-means 灵活(不同大小/方向);有似然与 BIC 选 ;生成式解释清晰。 |
| 局限与缺点 | 正态假设;高维 难估;局部最优;对初始化敏感;非椭圆复杂形状不如谱/密度法。 |
K-means 可视为等方、硬分配的极限特例。
三、核心原理
1. 潜变量
指示来源分量。完全数据对数似然依赖 。
2. EM
E 步责任度:
M 步:
每次 EM 不降低观测数据对数似然,但可能到局部极大。
3. 选
AIC/BIC:在似然与参数量间权衡;BIC 惩罚更强,常用。
四、关键决策
| 决策点 | 建议 |
|---|---|
| 协方差结构 | 对角/共享/满矩阵;小样本用共享或对角 |
| 初值 | K-means++ 启动 + 多重启 |
| BIC + 业务 | |
| 正则 | 对 加 RegularizationValue 防奇异 |
| 标准化 | 有助于数值稳定 |
| 硬标签 |
五、MATLAB 示例
rng(5);
X = [mvnrnd([0 0],[1 0.6;0.6 1],50);
mvnrnd([4 1],[1 -0.4;-0.4 0.8],50)];
Xz = zscore(X);
% 拟合 GMM
K = 2;
gm = fitgmdist(Xz, K, ...
"Replicates", 5, ...
"CovarianceType", "full", ...
"RegularizationValue", 1e-6, ...
"Options", statset("MaxIter", 500, "Display", "off"));
idx = cluster(gm, Xz);
P = posterior(gm, Xz); % n x K 责任度
figure; gscatter(Xz(:,1), Xz(:,2), idx); hold on;
% 画置信椭圆可自写或用 gmPDF 等高线
gmPDF = @(x,y) arrayfun(@(a,b) pdf(gm, [a b]), x, y);
fcontour(gmPDF, [min(Xz(:,1)) max(Xz(:,1)) min(Xz(:,2)) max(Xz(:,2))]);
title("GMM 聚类与密度等高线");
fprintf("对数似然 = %.2f, AIC=%.1f, BIC=%.1f\n", ...
gm.NegativeLogLikelihood*(-1), gm.AIC, gm.BIC);
% 用 BIC 选 K
bics = zeros(1,5);
for k = 1:5
gmk = fitgmdist(Xz, k, "Replicates", 3, "RegularizationValue", 1e-6);
bics(k) = gmk.BIC;
end
figure; plot(1:5, bics, "-o");
xlabel("K"); ylabel("BIC"); title("GMM 的 BIC 选 K(越小越好)");
[~, bestK] = min(bics);
fprintf("BIC 建议 K=%d\n", bestK);
% 软分配示例
fprintf("前 5 个样本责任度:\n"); disp(P(1:5,:));
六、如何解释结果
- :比重、中心、形状方向;
- 责任度:边界点的软归属;
- BIC 曲线:模型复杂度权衡;
- 与 K-means:椭圆拉伸簇上 GMM 更合理;
- 报告:协方差类型、正则、重启次数、BIC、。
七、常见误区
1. 高维满协方差 + 小样本
奇异或过拟合,应约束 。
2. 单次 EM 当全局最优
必须 Replicates。
3. 把责任度解释为“真实比例身份”
是模型推断,依赖正态混合假设。
4. 非高斯多峰硬套很少分量
需更多分量或改模型,但分量过多难解释。
5. 只报似然不报 BIC/测试
似然随 升不说明更好。
八、小结
GMM 用多个高斯分量的混合描述数据,EM 在责任度与参数之间交替估计;聚类、密度与软标签一体完成。
它是从 K-means 走向概率建模的自然升级:当簇大小方向不同且近似椭圆时,GMM+BIC 往往比纯 SSE 更有说服力。
(本节完)