第 10 章 PCA
PCA 是 Principal Component Analysis,主成分分析。它是一种无监督降维方法,用新的低维特征表示原始数据,同时尽量保留数据中的主要变化。
PCA 不从原始特征中挑选子集,而是寻找一组新的正交方向,并把数据投影到这些方向上。
10.1 为什么需要降维
当特征维度很高时,可能出现几个问题:
- 训练和预测成本更高。
- 特征之间可能存在冗余。
- 高维数据不方便可视化。
- 噪声特征可能影响模型效果。
降维的目标是用更少的维度保留尽可能多的信息。
PCA 常见用途:
- 数据压缩。
- 数据可视化。
- 去除部分噪声。
- 加快后续模型训练。
10.2 PCA 的基本思想
PCA 寻找的是数据方差最大的方向。
二维数据压缩到一维时,PCA 会找一条线,让样本投影到这条线以后尽量保留原始数据的变化。
直观理解:
方差越大的方向,越能解释数据的主要变化。第一主成分是方差最大的方向,第二主成分是在和第一主成分正交的条件下方差最大的方向,后面的主成分依次类推。
10.3 数据预处理
使用 PCA 前通常要先做均值归一化:
如果不同特征尺度差别很大,还需要标准化:
原因是 PCA 依赖方差。如果某个特征数值范围很大,它可能主导主成分方向,即使它并不一定更重要。
其中
10.4 协方差矩阵
协方差描述两个特征是否一起变化。
PCA 会基于协方差矩阵寻找主成分方向。
设数据矩阵为:
其中
其中
10.5 PCA 的基本算法
常见流程:
- 对特征做均值归一化,必要时做标准化。
- 计算协方差矩阵。
- 对协方差矩阵做奇异值分解(Singular Value Decomposition, SVD)或特征值分解。
- 选择前
k个主成分。 - 把数据投影到低维空间。
如果使用 SVD:
其中:
| 符号 | 含义 |
|---|---|
| 左奇异向量矩阵,列向量给出主成分方向 | |
| 对角矩阵,对角元素 | |
| 右奇异向量矩阵 | |
| 需要保留的主成分数量 |
取 k 列作为投影方向。
投影到低维空间:
其中:
| 符号 | 含义 |
|---|---|
| 原始数据 | |
前 k 个主成分方向 | |
| 降维后的数据 |
10.6 选择主成分数量
可以根据保留方差比例选择 k:
如果希望保留 99% 的方差信息,就选择满足上式的最小 k。
保留比例越高,信息损失越小,但降维效果越弱;保留比例越低,压缩更明显,但信息损失更大。
10.7 PCA 和特征选择的区别
PCA 不是特征选择。
| 方法 | 输出 | 是否保留原特征含义 |
|---|---|---|
| 特征选择 | 原始特征的一部分 | 保留 |
| PCA | 原始特征的线性组合 | 不完全保留 |
特征选择是从原始特征中挑列;PCA 是构造新的坐标轴。
10.8 PCA 的局限
PCA 是线性降维方法,因此它主要捕捉线性结构。
局限:
- 不适合捕捉复杂非线性结构。
- 主成分不一定容易解释。
- 对特征尺度敏感。
- 降维后可能损失对监督任务有用的信息。
PCA 是无监督方法,它只看输入