概率主成分分析 (PPCA) MATLAB 实现项目说明
项目介绍
本项目提供了一个基于 MATLAB 的概率主成分分析(Probabilistic Principal Component Analysis, PPCA)完整实现方案。PPCA 是传统主成分分析(PCA)的正态潜在变量模型形式,它将降维任务定义在一个显示的高斯生成模型框架内。通过使用期望最大化(EM)算法,本项目能够从观测数据中估计出潜在变量的表示、权重矩阵以及噪声方差,为高维数据提供概率层面的重构与分析。
功能特性
- 完整的生成模型模拟:程序能够根据指定的潜在空间维度、权重和噪声水平生成具有低维结构的合成数据。
- EM 算法实现:实现了 PPCA 的核心迭代算法,包括期望步(E-step)计算潜在变量的后验统计量,以及极大化步(M-step)更新模型参数。
- 参数收敛监控:通过计算对数似然函数(Log-Likelihood)实时检测算法的收敛状态。
- 模型评估系统:提供重构均方误差(MSE)计算以及估计噪声方差与真实方差的对比。
- 多维度可视化:包含收敛曲线、数据特征相关性热图、潜在空间分布(前 2 个主成分)以及原始数据与重构数据的动态对比。
- 解析解对比:内置基于奇异值分解(SVD)的 PPCA 解析解计算函数,用于辅助验证算法结果。
逻辑流程与实现逻辑
程序主要遵循以下逻辑步骤进行:
- 环境配置与数据生成:
初始化样本量、原始维度、目标维度等参数。利用线性变换(X = ZW' + mu)叠加随机高斯噪声来构造模拟数据集。
- 数据预处理:
自动计算观测数据的均值并进行中心化处理,这是 PPCA 及传统 PCA 处理的基础。
- EM 迭代核心:
初始化权重矩阵 W 和噪声方差 sigma^2。
在 E 步中,利用当前参数计算潜在变量 Z 在给定数据 X 下的后验均值和二阶矩。
在 M 步中,根据后验统计量更新权重矩阵 W 和噪声方差,以最大化完整数据的对数似然。
计算观测数据的对数似然函数值,并根据预设的阈值判断迭代是否停止。
- 结果生成与可视化:
计算最终的潜在表示(降维结果)。
利用估计的参数对原始数据进行重构。
绘制四组核心图表,从收敛性、特征结构、投影分布、重构精度四个维度展示模型效果。
关键算法与细节分析
- EM 迭代公式:
程序严格遵循了 Tipping 与 Bishop 提出的 PPCA 经典公式。在 E 步中,通过矩阵求逆引理优化了计算效率;在 M 步中,通过迹运算(trace)处理残差项以精确更新噪声方差。
- 对数似然计算:
为了提高数值稳定性,程序实现了利用行列式引理简化后的对数似然计算公式。通过将原始维度 D 下的复杂计算转化为目标维度 K 下的操作,大幅降低了计算量。
- 潜在空间映射:
不同于标准 PCA 的正交投影,PPCA 的映射考虑了噪声方差的影响。程序中通过后验均值 E[Z|X] 获取样本在潜在空间的坐标。
- 解析解验证:
程序包含了一个基于协方差矩阵特征值分解的辅助逻辑。在无缺失值的情况下,PPCA 的最大似然解可以通过对数据协方差矩阵进行特征分解并扣除噪声平均贡献来直接获得。
使用方法
- 运行环境:确保已安装 MATLAB 软件。
- 启动程序:在 MATLAB 命令行窗口中执行主函数。
- 查看输出:程序会在命令行输出估计的噪声方差与真实值的对比,以及重构的 MSE 误差。
- 结果分析:自动生成的图形窗口将展示算法的收敛情况和降维重构效果,用户可根据这些图表评估模型对特定数据集的拟合程度。
系统要求
- 软件版本:推荐使用 MATLAB R2016b 或更高版本。
- 工具箱需求:基础功能仅依赖 MATLAB 核心矩阵运算。可视化及相关性计算可能需要 Statistics and Machine Learning Toolbox(用于 corr 函数)。
- 硬件建议:标准个人电脑即可运行,针对超大规模数据集(1000 维以上),建议增加内存以优化矩阵求逆及乘法速度。