Skip to content

算法Algorithm

主成分分析

Principal component analysis · PCA · 线性主成分分析

从中心化数据的最大方差方向得到得分与仿射重构,并证明它最小化欧氏平方重构误差。

形式陈述 ​

设 D∈Rn×d 的每一行是一个样本,n≥1。记样本均值、中心化矩阵及经验协方差矩阵为

μ=1nD⊤1,X=D−1μ⊤,C=1nX⊤X.

这里采用分母 n,即把训练样本看成等概率的有限分布。取奇异值分解 X=UΣV⊤,按降序排列奇异值并补零,则 C 的特征值为 λi=σi2/n,单位特征向量为右奇异向量 vi。给定 0≤k≤d,令 Vk=(v1,…,vk)。PCA 的三个输出分别是主方向 Vk、低维得分 Z 与重构矩阵:

Z=XVk,Xk=ZVk⊤,D^=1μ⊤+Xk.

当 k 不超过秩时,Z=UkΣk;补入零方向只增加全零得分列。VkVk⊤ 是到主子空间的正交投影。因此 Xk 近似中心化数据,D^ 则把原样本投到经过 μ 的仿射子空间 μ+span(v1,…,vk)。

在所有 W∈Rd×k、W⊤W=Ik 中,W=Vk 同时最大化投影后的总方差、最小化平方重构误差:

maxWtr(W⊤CW)=∑i=1kλi,minW‖X−XWW⊤‖F2=∑i>kσi2.

这里的 Frobenius 范数平方是所有样本欧氏残差平方的总和。只要总方差非零,保留方差比例就是 ∑i≤kλi/∑iλi。

直觉

中心化确定“围绕哪里变化”,主方向确定“沿哪里变化最多”。投影得分是样本在新坐标轴上的坐标,重构则用这些坐标返回原来的特征空间。方向只有 d 个分量,得分却随样本而变;把两者都叫作“主成分”容易混淆模型参数和数据表示。

对一条固定直线,每个样本的最近点是垂足。转动直线时,保留的平方长度与丢掉的平方长度之和始终等于样本到均值的平方距离。因此,让投影展开得最充分与让残差最短是同一个优化问题。均值通常不在原点,主轴也应随均值一起平移。

首主轴保留 14/15 的方差,四条残差的平方和为 1

图中实心圆是原数据,空心方点是投影重构,叉号是均值。相同的横纵尺度使垂直关系保持可见;虚线长度对应本例实际丢失的误差,而不是示意箭头。

例子与边界

四个原始样本的完整计算 ​

取四个二维样本,按行排列为

D=(54324521),μ=(7/23),X=(3/21−1/2−11/22−3/2−2).

每列减去自己的均值后,列和均为零。逐项相乘得到

X⊤X=(56610),C=(5/43/23/25/2).

X⊤X 的特征多项式是 t2−15t+14=(t−14)(t−1)。因而可以选

v1=113(23),v2=113(−32),(λ1,λ2)=(72,14).

两个奇异值为 14 与 1;经验总方差是 15/4。保留首方向时,四个得分与中心化重构分别是

Z=Xv1=113(6−47−9),X1=Zv1⊤=113(1218−8−121421−18−27).

例如首个样本的得分为 6/13,它在主方向上保留的位移为 (12/13,18/13)。加回均值,四个原尺度重构点是

D^=(115/2657/1375/2627/13119/2660/1355/2612/13).

被丢掉的第二方向得分为

Xv2=113(−5/2−1/25/21/2),D−D^=X−X1=126(15−103−2−1510−32).

每一行残差都与 (2,3) 垂直。因为 v2 是单位向量,总平方误差为 (25+1+25+1)/(4⋅13)=1,每样本平均平方误差为 1/4,保留方差比例为 14/15。该平均误差以一个二维样本为单位;若按八个标量坐标平均,则为 1/8。

均值、尺度与不唯一性 ​

X1 的秩为一,但上述 D^ 的秩为二:均值 (7/2,3) 不平行于主方向。PCA 给原数据的最佳仿射一维重构,不能据此称 D^ 是原矩阵 D 的最佳秩一逼近。

分母从 n 改成 n−1 时,需 n≥2;所有特征值同乘 n/(n−1),主方向、重构与方差比例不变。按列标准化则改变了距离的尺度,通常也改变主方向。本例除以各列经验标准差后,协方差成为

(16/506/501),

首方向在标准化坐标中变成 (1,1)/2。这是一个不同的优化问题,解码时还须恢复各列尺度。零方差列不能直接除以标准差。

方向的整体符号任意,重特征值空间中的正交基也任意;这些变化未必改变投影。如果 0<k<d 且 λk>λk+1,首 k 维子空间唯一。若相等并为正,跨越截断位置的重根允许不同最优子空间,也允许不同重构。若 k 已涵盖所有正特征值,额外零方向可以任意选择,训练重构仍完全相同。k=0 时所有样本重构为均值;k≥rankX 时误差为零。若 X=0,任意方向都最优,方差比例的分母为零,应报告“总方差为零”而不计算 0/0。

推论与应用

最大方差与最小误差为什么等价 ​

令 P=WW⊤。每一行的 XP 与 X(I−P) 正交,逐行应用 Pythagoras 等式,得到

‖X−XP‖F2=‖X‖F2−‖XW‖F2=‖X‖F2−ntr(W⊤CW).

XW 的列均值仍为零,所以最后的迹正好是投影坐标的方差总和。在 C 的完整正交特征基中设 ai=‖W⊤vi‖2,有 0≤ai≤1、∑iai=k,且 tr(W⊤CW)=∑iλiai。对 0<k<d,将遗漏的前 k 项与选入的后项比较:

∑i≤kλi−∑iλiai=∑i≤kλi(1−ai)−∑i>kλiai≥λk(∑i≤k(1−ai)−∑i>kai)=0.

最后用的是权重总和为 k。W=Vk 取到等号,代回 Pythagoras 等式即得尾部奇异值平方和;k=0,d 的结论直接成立。严格谱隙时,等号迫使前 k 个权重全为一、其余全为零,也就固定了投影子空间。

为什么最佳仿射平面可以取为经过均值?对任意基点 a 和投影 P,拟合到 a+imP 的残差满足

‖(D−1a⊤)(I−P)‖F2=‖X(I−P)‖F2+n‖(I−P)(μ−a)‖22.

交叉项因 1⊤X=0 消失。固定 P 后取 a=μ 就使第二项为零,再优化 P 即得到 PCA。SVD 条目还证明:同一个 Xk 在所有秩至多 k 的矩阵中也使 Frobenius 误差最小,而不只是在投影形式的候选中最优。

稠密实现的步骤与代价 ​

一种直接实现是先计算均值并中心化,再形成 C=X⊤X/n,对这个实对称矩阵作完整特征分解,按特征值降序取前 k 个方向,最后按需要计算得分和重构。在固定精度、每次标量算术视为常数代价的模型下,中心化需要 O(nd) 次运算,形成协方差需要 O(nd2),标准稠密完整特征分解需要 O(d3);这里计的是算术复杂度,不是随精度增长的位复杂度。

得到 Vk 后,低维投影 Z=XVk 的矩阵乘法需要 O(ndk) 次运算。若还要显式输出全部 n×d 重构坐标,计算 ZVk⊤ 再加回均值需要 O(ndk+nd);即使 k=0,写出均值重构仍需 O(nd)。由于 k≤d,这条完整稠密流程的总时间为 O(nd2+d3)。保留中心化数据、协方差、完整特征方向及得分需要 O(nd+d2) 存储,显式重构也不改变这个量级;拟合后仅保存模型参数 μ,Vk 则只需 O(d+dk)。也可以直接对 X 作 SVD 并取右奇异向量,避免显式形成协方差矩阵。

用训练坐标处理新样本 ​

对新样本列向量 x,固定训练时保存的 μ,Vk,计算 z=Vk⊤(x−μ),再用 x^=μ+Vkz 重构。本例若 x=(5,5)⊤,则 z=9/13,x^=(127/26,66/13)⊤,残差 (3/26,−2/26)⊤ 与首方向正交。把新样本加入后重算均值会改变坐标系统,已属于重新拟合。

PCA 的得分协方差为 Vk⊤CVk=diag(λ1,…,λk),所以训练得分两两不相关;不相关并不意味着独立。最大化训练方差也不保证保留预测目标所需的信息,或保证估计到总体的真实主方向。这些目标需要额外的数据模型与验证。核主成分分析把同样的中心化和谱投影搬到核特征空间,但通常不能像本页这样直接得到输入坐标中的唯一重构。

参考资料
关系图谱12 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系