Skip to content

EM 与 GMM

本章目标

  1. 明确本分册对应的 EM(GMM)源码入口与运行方式——注意这是无监督聚类,与集成学习的分类/回归任务不同。
  2. 理解当前 EM 文档各章节分别负责解释什么内容。
  3. 建立从概率模型、EM 迭代、参数估计到聚类评估的整体阅读路线。

对应代码速览

组件路径说明
数据生成data_generation/probabilistic.pyProbabilisticData.em() 手动合成 3 分量高斯混合数据
数据导出data_generation/__init__.py导出 em_data
训练封装model_training/probabilistic/em.pytrain_model(...) 封装 sklearn.mixture.GaussianMixture 训练
端到端流水线pipelines/probabilistic/em.py完成标准化、EM 训练、聚类预测和可视化评估
聚类可视化result_visualization/cluster_plot.py绘制聚类分布图(预测标签 vs 真实标签双面板对比)

默认配置速览(来自源码)

项目当前实现
训练模型GaussianMixture(n_components=3, covariance_type="full", max_iter=200, random_state=42)
数据来源手动合成 GMM 数据——3 个分量,均值 {[0,0],[4,4],[3,4]},标准差不同,权重 [0.5,0.3,0.2]
特征预处理StandardScaler().fit_transform(X)——全量数据标准化(无训练/测试切分)
数据拆分——聚类评估在全量数据上进行
评估呈现聚类分布图(预测标签 + 真实标签对比)+ 对数似然下界日志

EM 与本仓库其他算法的定位对比

配置项KMeansDBSCANEM (GMM)
任务类型聚类聚类聚类
算法范式质心迭代密度连接概率生成模型
赋值方式硬赋值(每个点一个簇)硬赋值 + 噪声点软赋值(每个点对每个分量有归属概率)
簇形状球形任意椭圆形(full covariance)
训练输入ytrue_label 仅用于评估ytrue_label 仅用于评估ytrue_label 仅用于评估
标准化
评估聚类图 + inertia_聚类图 + 噪声点分析聚类图 + log-likelihood
核心输出labels_cluster_centers_labels_predict_proba()(软赋值)、means_covariances_

阅读路线

  1. 数学原理
  2. 数据构成
  3. 思路与直觉
  4. 模型构建
  5. 训练与预测
  6. 评估与诊断
  7. 工程实现
  8. 练习与参考文献

如何运行

示例代码

bash
python -m pipelines.probabilistic.em

理解重点

  • 这个命令会运行 GMM 的 EM 算法训练——拟合一个 3 分量全协方差高斯混合模型。
  • 当前流程是无监督聚类——true_label 仅在评估时用于对比真实分量归属,不参与模型训练
  • EM 算法的输出是软聚类(每个样本对每个分量有一个概率归属)——这是与 KMeans 硬聚类的根本区别。

先修

小结

  • 本分册严格对应当前仓库中的 EM(GMM)源码实现。
  • EM 的核心特点:概率生成模型 + 软赋值 + E 步(计算期望)+ M 步(最大化参数)+ 全协方差椭圆形簇——与 KMeans 的硬赋值球形簇形成根本差异。
  • 当前使用手动合成的 3 分量非球形 GMM 数据 + GaussianMixture(covariance_type="full"),是展示 GMM 对椭圆形簇建模能力最经典的教学配置。