PCA 主成分分析
数据太多维?找到最重要的几个方向,把信息压缩进去——这就是 PCA
01 核心原理(大白话版)
你手里有一张照片,需要发给朋友,但文件太大传不过去。你把图片压缩一下——画面主体还在,细节丢了一些,但整体信息基本保留。
PCA 做的是同一件事:把高维数据"压缩"成低维,但优先保留最重要的信息。
关键问题是:什么叫"最重要"?PCA 的答案是——方差最大的方向最重要。数据在某个方向上变化越大、越分散,那个方向包含的信息就越多。把数据投影到这个方向上,就能用更少的数字表达更多的内容。
四步走完 PCA
把所有数据点都减去均值,让数据的"重心"移到原点。这样方向比较才有意义。
协方差矩阵记录了每对特征之间的相关程度——哪两个维度总是一起变化,哪两个维度互相独立。
对协方差矩阵做特征分解,得到若干个互相垂直的方向(主成分)。对应特征值越大,那个方向的方差越大、信息越多。
把数据投影到前 k 个主成分方向上,原来 100 维的数据可能只需要 2~3 维就能保留 95% 的信息。
运行下面的代码,可以看到完整的四步过程:原始散点图 → 中心化后移到原点 → 红线标出 PC1 主方向 → 所有点垂直投影到主轴上。
降多少维合适?
看"方差解释比例"
每个主成分都有一个方差解释比例。前 k 个主成分加起来解释了 95% 的方差,通常就够了,剩下 5% 大多是噪声。
用"碎石图"辅助判断
把各主成分的特征值从大到小画出来,曲线出现明显"肘部"的位置,就是合适的维数截断点。
一步步构建 PCA
主轴沿 45° 方向的椭圆,主成分方向明显,正好用来演示 PCA 如何找到这个隐藏的"主方向"。
减去均值让所有方向的比较在同一起点上。不中心化,主成分方向会被均值偏移污染。
协方差矩阵捕捉各维度的相关性,特征向量就是主成分方向,特征值越大说明该方向信息越多。
把每个点投影到 PC1 方向(点积),2D 数据变成 1D 坐标,同时记录保留了多少方差。
四段拼在一起,加上可视化,就是完整演示代码——看下面。
02 代码
03 学术性讲解
PCA(主成分分析)是一种常用的降维方法。它的核心思想是:找到数据中方差最大的方向,把高维数据投影到低维空间,同时尽量保留信息。
为什么需要降维?
- 可视化:将高维数据降到 2-3 维进行可视化
- 压缩:减少存储空间
- 加速:减少计算量
- 去噪:去除噪声和冗余特征
主成分是什么?
主成分是数据中方差最大的方向。第一主成分是数据分布最"长"的方向,第二主成分是与第一主成分正交的方向中方差最大的。
算法步骤
把每个特征减去它的均值,让数据中心移到原点
反映各特征之间的相关程度
特征向量表示主成分方向,特征值表示该方向的重要性
按特征值大小排序,选择前 k 个作为主成分
PCA 降维演示
将 2D 数据降到 1D,观察主成分方向。左侧为原始数据与主成分方向,右侧为降维后的 1D 投影:
降维结果
总结
最大化方差
高维数据
低维投影
方差解释比例