主成分分析 PCA

Views: --

主成分分析是最常用的无监督降维方法。它的迷人之处在于一个”殊途同归”:你可以从两个完全不同的目标出发——“投影后方差最大”或”重建误差最小”——最后却落到同一个数学对象上:协方差矩阵的特征向量。这种”不同入口、同一出口”的结构,是线性代数在机器学习里最漂亮的现身之一。

一、降维要保住什么

高维数据往往是”虚胖”的:很多维度彼此相关,真正的信息挤在少数几个方向上。降维就是把数据投影到一个低维子空间,同时尽量少丢信息。

PCA 的判断标准是方差:数据在某个方向上铺得越开(方差越大),这个方向携带的区分信息就越多;反过来,方差很小的方向上点都挤成一团,往往是噪声,可以丢。所以 PCA 要找的,是数据”最舒展”的那几个方向。

这件事有两种等价的说法,下面分别推。

二、视角一:最大化投影方差

数据 {xn}\{\mathbf{x}_n\} 每点 DD 维,先找一个单位方向 u1\mathbf{u}_1u1Tu1=1\mathbf{u}_1^{\mathsf{T}}\mathbf{u}_1 = 1)把数据投上去。投影后的方差可以化简成一个漂亮的二次型:

Var=u1TSu1,S=1Nn(xnxˉ)(xnxˉ)T\text{Var} = \mathbf{u}_1^{\mathsf{T}} \mathbf{S}\, \mathbf{u}_1, \qquad \mathbf{S} = \frac{1}{N}\sum_{n}(\mathbf{x}_n - \bar{\mathbf{x}})(\mathbf{x}_n - \bar{\mathbf{x}})^{\mathsf{T}}

其中 S\mathbf{S} 是数据的协方差矩阵。目标是在 u1=1\|\mathbf{u}_1\| = 1 的约束下最大化它。用拉格朗日乘子法,对 u1\mathbf{u}_1 求导置零,得到:

Su1=λ1u1\mathbf{S}\, \mathbf{u}_1 = \lambda_1 \mathbf{u}_1

这正是特征值方程!最优投影方向必须是协方差矩阵的特征向量。把它代回,投影方差恰好等于对应的特征值 λ1\lambda_1。所以要方差最大,就该选最大特征值对应的特征向量——这就是第一主成分。要降到 MM 维,就取前 MM 大特征值的特征向量。由于 S\mathbf{S} 对称、特征向量天然正交,各主成分之间互不相关,正好实现了”去冗余”的初衷。

三、视角二:最小化重建误差

换个目标:把数据投到低维再重建回原空间,要求重建得最像原数据。用一组标准正交基展开每个点,只保留前 MM 个坐标、其余维度用一个公共常数顶替,得到重建 x~n\tilde{\mathbf{x}}_n。重建的均方误差(失真度)化简后是:

J=i=M+1DuiTSuiJ = \sum_{i=M+1}^{D}\mathbf{u}_i^{\mathsf{T}}\mathbf{S}\mathbf{u}_i

用同样的拉格朗日手法,又会得到 Sui=λiui\mathbf{S}\mathbf{u}_i = \lambda_i \mathbf{u}_i,而失真度变成被丢弃方向的特征值之和

J=i=M+1DλiJ = \sum_{i=M+1}^{D}\lambda_i

要让误差最小,就丢掉最小的那些特征值、保留最大的那些。和视角一的结论一模一样。 两个目标其实是一枚硬币的两面:方差留在保留的方向里(iMλi\sum_{i\le M}\lambda_i),误差则等于丢掉的方向里(i>Mλi\sum_{i>M}\lambda_i),总和是固定的(总方差),最大化前者就是最小化后者。

四、怎么用,能用到什么程度

落地步骤干净利落:

  1. 算样本均值 xˉ\bar{\mathbf{x}} 和协方差矩阵 S\mathbf{S}
  2. S\mathbf{S} 做特征分解,得到特征值和特征向量;
  3. 特征值从大到小排序,取前 MM 个特征向量拼成投影矩阵,数据乘上去就降到了 MM 维。

实践中常看特征值谱:通常前几个很大、之后陡降到接近 0,这个”陡降点”提示了该保留几维。

PCA 的优点是无参数、纯由数据驱动、能顺带去噪。但它的三个隐含假设也是它的天花板:假设主结构是线性的(弯曲流形它抓不住)、假设大方差 = 重要(若关键信号恰好方差小,会被误删)、隐含高斯式的分布。这三条决定了它擅长什么、会在哪里失手。

五、PCA 与 LDA:无监督 vs 有监督

值得把 PCA 和 **LDA(线性判别分析,又称 Fisher 判别)**放在一起看,因为它们都是线性投影降维,目标却恰好”对着干”。

PCA 不看标签,只求保住最多信息;但”信息最多的方向”未必是”最好分类的方向”——完全可能投影之后两类反而糊成一团。LDA 正是为了补这一刀:它用标签,要让投影后不同类离得尽量远、同类挤得尽量紧

PCALDA
目标保留最多信息(方差最大)类别最易区分
用标签否(无监督)是(有监督)
风险投影后类别可能混叠专为分类,类间分得开

LDA 用两个散度刻画目标:类间散度 SbS_b(越大越好)和类内散度 SwS_w(越小越好),最大化二者之比(Fisher 准则):

JF(w)=wTSbwwTSwwJ_F(\mathbf{w}) = \frac{\mathbf{w}^{\mathsf{T}} S_b\, \mathbf{w}}{\mathbf{w}^{\mathsf{T}} S_w\, \mathbf{w}}

解得最优投影方向 w=Sw1(m1m2)\mathbf{w}^* = S_w^{-1}(\mathbf{m}_1 - \mathbf{m}_2)。一句话记住分工:PCA 求”信息保留最多”,LDA 求”类别分得最开”。降维若是为了可视化或压缩,用 PCA;若下游就是分类、且有标签,LDA 往往更对路。

小结

  • PCA 找数据”最舒展”的方向,本质是协方差矩阵的特征分解。
  • “最大方差”与”最小重建误差”是同一问题的两面,都取最大特征值的特征向量。
  • 实操就三步:协方差 → 特征分解 → 取前 MM 大。看特征值谱定维数。
  • PCA 的线性 / 大方差 / 高斯三假设是它的适用边界。
  • PCA 无监督保信息,LDA 有监督保可分性——按下游任务选。