Skip to content

第 10 章 PCA

PCA 是 Principal Component Analysis,主成分分析。它是一种无监督降维方法,用新的低维特征表示原始数据,同时尽量保留数据中的主要变化。

PCA 不从原始特征中挑选子集,而是寻找一组新的正交方向,并把数据投影到这些方向上。

10.1 为什么需要降维

当特征维度很高时,可能出现几个问题:

  • 训练和预测成本更高。
  • 特征之间可能存在冗余。
  • 高维数据不方便可视化。
  • 噪声特征可能影响模型效果。

降维的目标是用更少的维度保留尽可能多的信息。

PCA 常见用途:

  • 数据压缩。
  • 数据可视化。
  • 去除部分噪声。
  • 加快后续模型训练。

10.2 PCA 的基本思想

PCA 寻找的是数据方差最大的方向。

二维数据压缩到一维时,PCA 会找一条线,让样本投影到这条线以后尽量保留原始数据的变化。

直观理解:

text
方差越大的方向,越能解释数据的主要变化。

第一主成分是方差最大的方向,第二主成分是在和第一主成分正交的条件下方差最大的方向,后面的主成分依次类推。

10.3 数据预处理

使用 PCA 前通常要先做均值归一化:

xjxjμj

如果不同特征尺度差别很大,还需要标准化:

xjxjμjσj

原因是 PCA 依赖方差。如果某个特征数值范围很大,它可能主导主成分方向,即使它并不一定更重要。

其中 xj 是第 j 个特征,μj 是该特征的均值,σj 是该特征的标准差。

10.4 协方差矩阵

协方差描述两个特征是否一起变化。

PCA 会基于协方差矩阵寻找主成分方向。

设数据矩阵为:

XRm×n

其中 m 是样本数量,n 是特征数量。协方差矩阵可以写成:

Σ=1mXTX

其中 ΣRn×n 是协方差矩阵。这里默认 X 已经中心化,并使用 1m 作为分母;有些统计学定义使用 1m1。协方差矩阵中的元素表示特征之间的线性相关关系。

10.5 PCA 的基本算法

常见流程:

  1. 对特征做均值归一化,必要时做标准化。
  2. 计算协方差矩阵。
  3. 对协方差矩阵做奇异值分解(Singular Value Decomposition, SVD)或特征值分解。
  4. 选择前 k 个主成分。
  5. 把数据投影到低维空间。

如果使用 SVD:

Σ=USVT

其中:

符号含义
U左奇异向量矩阵,列向量给出主成分方向
S对角矩阵,对角元素 Sii 表示各主成分对应的方差信息
V右奇异向量矩阵
k需要保留的主成分数量

U 的前 k 列作为投影方向。

投影到低维空间:

Z=XUreduce

其中:

符号含义
X原始数据
Ureducek 个主成分方向
Z降维后的数据

10.6 选择主成分数量

可以根据保留方差比例选择 k

i=1kSiii=1nSii0.99

如果希望保留 99% 的方差信息,就选择满足上式的最小 k

保留比例越高,信息损失越小,但降维效果越弱;保留比例越低,压缩更明显,但信息损失更大。

10.7 PCA 和特征选择的区别

PCA 不是特征选择。

方法输出是否保留原特征含义
特征选择原始特征的一部分保留
PCA原始特征的线性组合不完全保留

特征选择是从原始特征中挑列;PCA 是构造新的坐标轴。

10.8 PCA 的局限

PCA 是线性降维方法,因此它主要捕捉线性结构。

局限:

  • 不适合捕捉复杂非线性结构。
  • 主成分不一定容易解释。
  • 对特征尺度敏感。
  • 降维后可能损失对监督任务有用的信息。

PCA 是无监督方法,它只看输入 X 的变化,不直接利用标签 y。因此,方差最大的方向不一定就是最有利于分类或回归的方向。

Powered by VitePress