# 高斯混合模型
# 基本概念
高斯混合模型(Gaussian Mixture Model,GMM)是一种基于概率的聚类算法,它假设数据是由多个高斯分布混合生成的。每个高斯分布代表一个簇,通过EM算法估计模型参数。
# 数学原理
# 1. 模型定义
高斯混合模型的概率密度函数:
其中:
- K 是高斯分布的数量(簇的数量)
- 是第k个高斯分布的混合系数(权重)
- 是第k个高斯分布的概率密度函数
- 是第k个高斯分布的均值向量
- 是第k个高斯分布的协方差矩阵
# 2. EM算法
# E步(期望步)
计算每个数据点属于每个高斯分布的后验概率(责任):
# M步(最大化步)
更新模型参数:
更新均值:
更新协方差矩阵:
更新混合系数:
其中:
- 是第k个分布的有效样本数
- N 是总样本数
# 算法步骤
初始化
- 设定高斯分布的数量K
- 初始化参数, ,
E步
- 计算每个数据点属于每个高斯分布的后验概率
M步
- 更新模型参数
- 最大化对数似然函数
重复
- 重复E步和M步直到收敛
- 收敛条件:对数似然变化小于阈值
# 优势特点
# 1. 软聚类
- 提供概率归属度
- 更好地处理重叠簇
- 反映数据的不确定性
# 2. 灵活性
- 可以建模各种形状的簇
- 适应不同的数据分布
- 可以处理混合密度
# 3. 概率框架
- 基于统计理论
- 可以进行概率推断
- 提供不确定性估计
# 应用场景
图像处理
- 图像分割
- 背景建模
- 目标跟踪
语音识别
- 声学建模
- 说话人识别
- 语音分割
异常检测
- 金融欺诈检测
- 网络入侵检测
- 设备故障诊断
生物信息学
- 基因表达分析
- 蛋白质结构预测
- 序列分析
# 优缺点
# 优点
- 提供概率框架
- 可以建模复杂分布
- 适应不同形状的簇
- 提供软聚类结果
# 缺点
- 需要预先指定簇的数量
- 计算复杂度较高
- 容易陷入局部最优
- 对初始值敏感
# 实践建议
# 1. 模型选择
- 选择合适的簇数量
- 使用信息准则(AIC/BIC)
- 交叉验证
# 2. 初始化策略
- K-means初始化
- 随机初始化多次
- 分层初始化
# 3. 数据预处理
- 特征标准化
- 异常值处理
- 降维
# 4. 模型评估
- 对数似然
- BIC/AIC指标
- 聚类纯度
# 代码实现
from sklearn.mixture import GaussianMixture
import numpy as np
# 创建示例数据
X = np.array([[1, 2], [1, 4], [1, 0],
[4, 2], [4, 4], [4, 0]])
# 创建GMM模型
gmm = GaussianMixture(n_components=2, random_state=42)
# 训练模型
gmm.fit(X)
# 预测簇标签
labels = gmm.predict(X)
# 获取簇的概率
probs = gmm.predict_proba(X)
# 进阶优化
变分贝叶斯GMM
- 自动确定簇数量
- 避免奇异性
- 更好的泛化能力
在线GMM
- 增量学习
- 处理流数据
- 动态更新参数
约束GMM
- 添加先验知识
- 引入正则化
- 提高稳定性
多视图GMM
- 集成多个特征空间
- 提高聚类准确性
- 处理异构数据