📊 PCA 主成分分析算法演示

交互式可视化主成分分析的原理、计算过程和降维效果

📚 算法原理

PCA 的核心思想:

主成分分析(Principal Component Analysis, PCA)是一种线性降维技术,通过寻找数据中方差最大的方向(主成分)来降低数据的维度,同时尽可能保留原始数据的信息。

数学原理:

  1. 数据标准化:将数据标准化为均值为0、标准差为1
  2. 计算协方差矩阵:$$C = \frac{1}{n-1}X^T X$$
  3. 特征值分解:$$C = P \Lambda P^T$$,其中 $P$ 是特征向量矩阵,$\Lambda$ 是对角特征值矩阵
  4. 选择主成分:按特征值从大到小排序,选择前 $k$ 个主成分
  5. 降维变换:$$Y = X P_k$$,其中 $P_k$ 是前 $k$ 个特征向量组成的矩阵
  6. 重构数据:$$\hat{X} = Y P_k^T$$

🎯 PCA 的用途

  • 数据降维:将高维数据投影到低维空间,减少存储和计算成本
  • 特征提取:从原始特征中提取最重要的特征,去除冗余信息
  • 数据可视化:将高维数据降到2D或3D,便于可视化分析
  • 噪声去除:通过保留主要成分,可以去除数据中的噪声
  • 数据压缩:在保留大部分信息的前提下,大幅减少数据量
  • 预处理:作为其他机器学习算法的预处理步骤,提高模型性能

⚙️ 参数控制

100
1
5

📈 统计信息

第一主成分方差解释率
0%
累计方差解释率
0%
重构误差 (MSE)
0.000
数据压缩比
0%

📊 可视化展示

原始数据与主成分方向

降维后的数据(1D投影)

重构后的数据

就绪

🎬 三维 PCA 动画演示(Manim)

说明:下面的动画使用 Manim 创建,展示了三维数据点在 PCA 转换前后的完整过程。

如果视频未显示,请先运行 manim -pql ml/pca-manim-demo.py PCADemo3D 生成动画视频。

完整 PCA 转换过程

详细转换步骤

📖 如何生成动画:

  1. 安装 Manim:pip install manim
  2. 快速预览(低质量):manim -pql ml/pca-manim-demo.py PCADemo3D
  3. 中等质量:manim -pqm ml/pca-manim-demo.py PCADemo3D
  4. 高质量(最终版本):manim -pqh ml/pca-manim-demo.py PCADemo3D
  5. 生成的视频将保存在 media/videos/pca-manim-demo/ 目录下

详细说明:请查看 pca-manim-README.md 文件。