混合高斯分布中基于最大期望算法的参数估计模型
项目介绍
本项目实现了一个基于最大期望(EM)算法的混合高斯模型(GMM)参数估计算法。该模型主要用于解决统计学和信号处理中的多峰分布建模问题,能够从一组无标签的观测数据中自动推断出多个高斯分布的均值、协方差以及每个分布所占的权重,从而实现数据的聚类和概率密度估计。
功能特性
- 自动生成仿真数据:内置多维高斯数据生成模块,可生成具有特定均值、协方差和比例的混合数据,用于验证算法的准确性。
- 高效的矩阵运算:在E-step(期望步)和M-step(极大步)中大量采用矩阵化运算,避免冗余循环,提升计算效率。
- 收敛性保障:程序包含对数似然度计算及收敛判定逻辑,并引入正则化项解决协方差矩阵奇异问题。
- 全方位可视化:提供对数似然收敛曲线图以及二维聚类结果图,包括数据点分布、分量等高线及混合分布总体边界。
系统要求
- 软件环境:MATLAB及其统计与机器学习工具箱(用于生成模拟数据的mvnrnd函数)。
- 硬件建议:具备基本图形处理能力的计算机,以顺畅显示可视化绘图。
实现逻辑与步骤
程序逻辑严密遵循EM算法的经典迭代过程,具体分为以下五个阶段:
- 模拟数据生成阶段
* 预设三个具有不同均值(mu_true)和协方差矩阵(sigma_true)的二维高斯分量。
* 按照给定的混合权重(pi_true)随机抽取样本,生成包含1000个观测点的数据集。
* 固定随机种子以确保实验结果的可重复性。
- 参数初始化阶段
* 通过对原始数据进行随机抽样来初始化三个高斯分量的均值。
* 将所有分量的协方差设为单位矩阵。
* 将每个分量的初始混合权重设为均等状态(1/K)。
- EM算法核心迭代阶段
*
E-step(期望步):利用当前参数计算多维高斯概率密度函数值。计算每个样本对每个高斯分量的响应度(Responsibility),并通过归一化处理得到属于各分量的后验概率。
*
对数似然计算:在每一轮迭代中计算观测数据的对数似然函数值,用于后续的收敛判定。
*
M-step(极大步):利用响应度作为权重,通过极大似然估计更新各个分量的均值、协方差以及权重。在更新协方差时,在对角线上加入微小的偏差值(1e-6)以防止矩阵奇异导致算法中断。
*
收敛判定:比较相邻两次迭代的对数似然值之差,当差值小于预设精度(1e-6)时退出循环。
- 统计结果分析阶段
* 算法停止后,在命令行窗口输出最终估计的每个高斯分量的权重和均值向量,便于用户比对真实参数。
- 可视化演示阶段
* 绘制对数似然随迭代次数的变化曲线,直观展现算法的收敛速度和稳定性。
* 在二维平面上根据最大响应度对样本点进行着色分类。
* 绘制各独立分量的概率密度等高环线,并叠加黑色虚线表示的混合分布总体密度轮廓。
* 使用黑色叉号标记算法最终估计出的各分布中心位置。
算法实现细节分析
- 概率密度计算:代码直接通过多维高斯公式实现。通过
(diff * inv_cov) .* diff 这种向量化形式高效计算指数项中的二次型部分。 - 鲁棒性处理:在M-step更新过程中,通过
eye(D)*1e-6 的正则化处理,保证了数值计算的稳定性,避免由于样本分布过于集中或数值舍入误差导致的协方差矩阵不可逆问题。 - 聚类准则:可视化阶段采用了硬聚类策略,通过
max 函数获取响应度最大的索引,将样本指派给概率最高的成分。 - 网格拟合:利用
meshgrid 和 contour 组合,在高维空间中重建概率密度曲面,从而实现对模型拟合效果的空间直观展示。