动机
数据表虽然有很多列,独立的变化模式却可能少得多。两项测量可以一起变化;位于高维空间中的观测,也可以大致集中在一个平面附近。降维要用较少坐标描述这些结构。要把这一要求写成数学问题,我们必须说清楚:保留什么信息,以及怎样度量重建误差。
主成分分析(PCA)选取相互正交的方向,尽量保留数据的变异。奇异值分解(SVD)提供这些坐标,也精确记录舍弃的变异。同一计算还可以理解为:用一个低维仿射子空间拟合观测。这种联系解释了为什么要先中心化,以及为什么方差公式使用奇异值的平方。
PCA 不像回归那样,指定某一列为因变量;各项特征共同决定几何。因此,测量单位会影响答案。把米改成厘米,如果不相应调整预处理,就会改变普通欧氏距离。选择哪些特征、使用什么尺度,都是数学模型的一部分。
定义
设 X∈Rn×d 包含 n≥2 个观测。第 i 行是 xiT,其中 xi∈Rd 是特征的列向量。以下始终采用“行代表观测、列代表特征”的约定:方向属于特征空间 Rd,全部观测的得分则组成 Rn 中的向量。
定义
中心化与样本协方差
平均特征向量与中心化矩阵定义为
μ=n1XT1,H=In−n111T,A=HX=X−1μT.这里 1∈Rn 的每一项都是一。样本协方差矩阵是
C=n−11ATA∈Rd×d.
由 1TH=0,可知 A 每列的总和都是零。另外 HT=H、H2=H,所以再次中心化不会改变结果。常数向量位于 H 的零空间,故 rank(A)≤min(n−1,d)。这解释了为什么原表即使具有满行秩,中心化后也可能出现零奇异值。减去均值移除的是整体位置,而不是围绕该位置的变化方向。
给定单位方向 v∈Rd,观测 i 的得分是 (xi−μ)Tv。得分向量为 Av,其均值是零,所以样本方差为
Varsample(Av)=n−1∥Av∥22=vTCv.
定义
奇异值、载荷方向与得分
把约化 SVD 写成
A=UΣVT,p=min(n,d),其中 U∈Rn×p、V∈Rd×p 的列向量分别正交归一,而 Σ=diag(σ1,…,σp),满足 σ1≥⋯≥σp≥0。正奇异值的个数是 r=rank(A)。右奇异向量 vj 是 PCA 的载荷方向,Avj=σjuj 是对应的得分向量。
完整 SVD 的 U、V 都是方形正交矩阵,中间则是矩形对角矩阵;它按需要补入零方向。对任何 k≤r,两种分解都给出相同的前 k 个载荷组成的矩阵 Vk=[v1 ⋯ vk],以及降维坐标 Z=AVk=UkΣk。载荷是用来量取坐标的方向,得分是某个观测在该方向的坐标;两者的维数也不同。
定理/命题
定理
主方向使保留方差最大
设 A 已中心化,C=ATA/(n−1)。如有需要,把奇异值序列补零至第 d 项。协方差特征值为
λj=n−1σj2.在所有单位方向中,v1 使得分方差最大。更一般地,若 W∈Rd×k 满足 WTW=Ik,则 tr(WTCW) 的最大值为 ∑j=1kλj,由前 k 个右奇异向量达到。
总变异非零时,第 j 个主成分的解释方差比例,以及前 k 个主成分的累计比例,分别是
ρj=∑ℓ=1rσℓ2σj2,Rk=∑ℓ=1rσℓ2∑j=1kσj2.
比例中的 n−1 被约去。若以 n 作为总体协方差的分母,特征值会改变,主方向及上述比例则不变。若全部观测相同,就有 A=0;所有得分都是零,没有正的总变异可用来定义百分比。
定理
投影误差与截断 SVD
对正交归一的 W,中心化坐标中的重建为 AWWT,而
∥A−AWWT∥F2=∥A∥F2−∥AW∥F2.因此 PCA 也使总平方重建误差最小。其解为
Ak=AVkVkT=UkΣkVkT,∥A−Ak∥F2=j=k+1∑rσj2.此外,在所有秩不超过 k 的矩阵 B 中,Ak 使 ∥A−B∥F 最小。返回原坐标时,重建为 X=1μT+Ak。
Frobenius 范数的平方等于矩阵各项的平方和,所以上式合计全部观测、全部特征的偏差,不是每个观测的方差,也不是每项数据的平均误差。解释秩的选择时,要同时说明这个尺度。保留八成变异是否足够,取决于用途;一个方差较小的特征仍可能很重要。最优化结论精确说明 PCA 所解的是哪一种平方距离问题。
降维坐标保留什么
得分表除了各列均值为零,列与列也相互正交。事实上,
n−11ZTZ=n−11Σk2=diag(λ1,…,λk).
因此不同得分的样本协方差为零,方差按大小排列,可从对角线直接读出每个保留坐标的贡献。零协方差描述的是这个得分表的二阶矩,仅凭它不能推断原来测量在统计上独立。PCA 构造正交线性坐标,使总变异最大,并没有为观测指定概率模型。
重建时沿相同载荷反向变换:把得分行乘以载荷矩阵的转置,就返回特征空间。重建行位于所选子空间,残差垂直于每个保留方向。这也提供计算检查:残差表乘以载荷矩阵,结果应为零(数值计算允许舍入误差)。投影会把不同原始观测映射为同一得分,所以仅靠保留得分不能恢复被舍弃的部分。
PCA 拟合直线时度量的是指定特征度量下最短的垂直距离;普通回归则把解释变量视为给定,沿因变量方向量取误差。因此,即使只有两项特征和一条直线,两种目标仍可能选择不同直线。使用算法前,要辨明误差模型允许哪些测量变化,以及最终需要的是预测,还是数据的几何表示。
证明思路
证明
从谱定理到主成分
ATA 对称且半正定,因为 vTATAv=∥Av∥2≥0。按特征值从大到小选择一组正交归一特征向量。对正特征值 σj2,令 uj=Avj/σj。于是 uiTuj=viTATAvj/(σiσj),在 i=j 时为一,其余为零。零特征值则给出 ∥Avj∥2=0,所以 Avj=0,不用除以零。这 r 个 uj 张成列空间,补成 Rn 的正交归一基得到方形 U,并保留完整特征基 V。取 Σ∈Rn×d,前 r 个对角项为正 σj,其余为零。逐列有 AV=UΣ,所以 A=UΣVT;矩形或秩不足矩阵也成立。
把单位向量展开为 v=∑jajvj,则 vTCv=∑jλjaj2≤λ1,因为 ∑jaj2=1。若选取多个方向,令 qj=∥WTvj∥2。正交投影给出 0≤qj≤1、∑jqj=k,故 tr(WTCW)=∑jλjqj 不超过最大 k 个特征值的总和。选取它们的特征向量就达到上界。
投影等式可逐个观测证明:每个中心化行向量分成子空间内的投影,以及与该空间垂直的余项;勾股定理把两部分的平方长度相加。再对所有行求和,就得到 Frobenius 等式。在 SVD 坐标中,被舍弃的各个秩一项也在 Frobenius 内积下正交,所以每项对误差的贡献恰是奇异值的平方。
为什么任意秩 k 矩阵也不能给出更好的结果?其所有行都位于某个维数不超过 k 的子空间 S。把 A 每行正交投影到 S,误差不会大于选择该候选矩阵的对应行。而在所有这些子空间中,上述方差论证已经找出最佳者。这同时证明了低秩近似和几何 PCA 的结论。
截断对谱范数 ∥E∥2=max∥w∥2=1∥Ew∥2 也最优。对 0≤k<r,
rank(B)≤kmin∥A−B∥2=∥A−Ak∥2=σk+1.
把秩不超过 k 的候选 B 限制在 span{v1,…,vk+1},因定义域维数为 k+1,其零空间含单位向量 w。所以 Bw=0,而 ∥(A−B)w∥2=∥Aw∥2≥σk+1。截断余项的最大奇异值恰为首个舍弃值,达到下界。谱误差度量单位方向的最坏放大,Frobenius 误差的平方则合计全部舍弃方向的平方损失。
例题
例题
1. 完整计算两项特征的 PCA
考虑四个观测:
X=12810105564,μ=[105],A=2−200001−1.A 的两列正交,故
ATA=[8002],C=[8/3002/3].取 v1=(1,0)T、v2=(0,1)T,则 σ1=22、σ2=2,而
U=1/2−1/200001/2−1/2,V=I2.相乘 Udiag(22,2)VT 可重新得到 A。第一个得分向量是 (2,−2,0,0)T,样本方差为 8/3,保留的变异比例是 8/(8+2)=4/5。只保留此坐标,再加回均值,得到
X=12810105555.最后两个观测各有大小为一的误差,总平方误差是 2,等于被舍弃的 σ22。除以八项数据后,均方误差是 1/4,逐项的均方根误差是 1/2。
这个例子区分了四个常被混用的量:奇异值、奇异值平方、样本方差、解释比例。它们描述同一方向,却回答不同问题。奇异值是得分空间的长度;把它平方再除以 n−1 才是样本方差。比例也要使用平方,因为正交分解中可相加的是平方能量,不是未平方的长度。
例题
2. 中心化改变拟合的几何
同一批原始观测满足
XTX=ATA+nμμT=[408200200102].非对角项变成 200,所以 (1,0)T 不是 XTX 的特征向量。直接分解 X,会选到另一个受整体位置影响的首方向。若只把原始观测投影到通过原点的横轴,整个第二坐标都被舍弃,平方误差为 25+25+36+16=102。
中心化 PCA 拟合的是通过 (10,5) 的水平线,误差只有 2。两者所解的拟合问题不同;最佳原始秩一方向也不一定水平。上述比较说明,原始横轴投影不等于中心化后的重建。
对新观测 (11,7),先减去训练数据的均值得到 (1,2)。第一得分为 1,用一个主成分重建后是 (11,5)。处理后续观测时,要沿用相同的均值和载荷,使所有得分使用同一坐标系。
仿射观点在此很清楚:保留的中心化子空间通过零,加回均值后才移回观测所在的位置。因此,维度可以用来描述数据周围的变化,不用花一个方向描述整体离开原点的位移。若要从得分表解码回原坐标,除了载荷,还需要保存平均向量。
例题
3. 特征单位与重复特征值
把第二项特征乘以三。中心化后的行是 (2,0)、(−2,0)、(0,3)、(0,−3),散布矩阵为 diag(8,18)。首载荷变成 (0,1)T,保留比例为 18/26=9/13,秩一平方误差为 8。
另一个选择是把原来每列除以其样本标准差,即 8/3 和 2/3。标准化后的散布矩阵是 3I2,协方差矩阵是 I2。每个单位方向的得分方差都为一,没有特别优先的单一首主成分;任意正交归一的一对方向都张成同一个二维空间。
标准化选择了另一种距离度量,让不同特征使用可比较的尺度。当单位较任意时,这可能有用;但如果变异大小本身有意义,标准化也会消除这项差异。解释保留比例前,先说清楚误差在原单位还是标准化单位中度量。零方差的列没有正标准差可除,它对中心化变异的贡献也是零。
幂迭代与伪逆
从实特征基到幂迭代
先备概念见 特征值、实对角化及可对角化判据。设实方阵 B=VDV−1 有实特征基,各列 vj 长度取一,但未必正交。一组模最大条件是
∣λ1∣>j>1max∣λj∣,c=V−1q0,c1=0.
从单位初值 q0 开始,每次相乘后归一化;在固定特征基中展开得到
qk+1=∥Bqk∥2Bqk,Bkq0=c1λ1k(v1+j>1∑c1cj(λ1λj)kvj).
其余系数相对首项几何衰减,方向就趋近首特征线;首系数非零也保证归一化分母不为零。这些比例属于特征基坐标,欧氏范数界还取决于基的几何。下文对称散布矩阵才可使用正交坐标的较强估计。
c1 由解 Vc=q0 得到,不能用 v1Tq0 代替:非正交基中,点积为零仍可有首系数,点积非零也未必有。缺少的首系数不会在相乘中出现;严格模间隔则排除另一个同量级模式持续竞争。
若 λ1<0,归一化向量可正负交替,收敛的是直线。Rayleigh 商 ρ(q)=qTBq/(qTq) 在该直线两个单位代表附近连续,且不受符号影响,所以趋近 λ1。非对称时没有对称矩阵的方差极值解释,中途商值也可超出实特征值范围。
例题
负主特征值与非正交基
取
B=[−3041],V=[1011],D=diag(−3,1).这里的基列尚未归一化。q0=(0,1)T 的坐标为 (−1,1)T,含首系数;把基归一化只会缩放系数,不改变零与非零。原始迭代为 (4,1)T、(−8,1)T,而 q2=(−8,1)T/65 有 ρ(q2)=−223/65<−3。方向趋近横线,符号交替。若沿 (1,1)T 开始,则一直留在特征值一的方向,虽与横向特征向量点积非零。
对单位右特征向量,减去 λ1v1v1T 仍把首向量映成零,但通常改变其他原特征向量。要保留其余特征对,可取左特征向量 w1TB=λ1w1T、w1Tv1=1,减去 λ1v1w1T。本例 v1=(1,0)T、w1=(1,−1)T 给出
B+3v1v1T=[0041],B+3v1w1T=[0011].
前者把原向量 (1,1)T 映成 (4,1)T,配对更新则保留它。对称矩阵可取相同的左右单位特征向量,就恢复正交消去公式。
近似首 PCA 方向
只需要首主方向时,可用幂迭代代替完整分解。设 S=ATA 的特征值为 λ1>λ2≥⋯≥λd≥0,正交归一特征向量为 vj。取单位初值 q0=∑jcjvj,要求 c1=0,反复计算
qk+1=∥Sqk∥2Sqk.
迭代方向与 Skq0 相同。提出 λ1k 后,其余方向的系数带有 (λj/λ1)k,所以垂直部分与首分量之比不超过
(λ1λ2)k∣c1∣∑j=2dcj2.
方向因此以几何速率趋近 v1,允许符号相反。归一化控制长度,不改变比例;谱间隔越小,收敛越慢。初值若垂直首方向,就永远没有该分量。单位向量的 qkTSqk 近似首特征值;已知精确首特征对后,S−λ1v1v1T 可移除该模式。大型数据可直接计算 Sq=AT(Aq),不用显式建立散布矩阵。
例题
4. 跟踪主要散布方向
取 S=diag(4,1)、q0=(1,1)T/2。两次迭代给出
q1=17(4,1)T,q2=257(16,1)T.第二坐标与第一坐标之比依次为 1、1/4、1/16,展示谱比 λ2/λ1 的作用;方向趋近首载荷 (1,0)T。
选择最小范数最小二乘系数
对实矩阵 M∈Rm×p,用正奇异值写成 M=UrΣrVrT,定义
M+=VrΣr−1UrT,z∗=M+y.
直接相乘 SVD,可核对四条 Penrose 等式:
MM+M=M,M+MM+=M+,(MM+)T=MM+,(M+M)T=M+M.
其中 MM+=UrUrT、M+M=VrVrT 分别正交投影到列空间和行空间,均对称且幂等。满行秩时前者是 Im,满列秩时后者是 Ip;方形可逆时 M+=M−1。秩不足时,两个投影辨明数据决定哪些响应与系数方向。
对任意 y,它是唯一最小范数最小二乘系数。因 Mz∗=UrUrTy 是 y 在列空间的正交投影,残差最小。其他最小二乘系数都是 z∗+h,其中 h∈kerM。而 z∗ 属于 Vr 张成空间,垂直零空间,所以 ∥z∗+h∥22=∥z∗∥22+∥h∥22;只有 h=0 才同范数。
方程相容时,这给出最短精确解;不相容时,则在同样准确的拟合中选择最短系数。只对正奇异值取倒数,无须逆转奇异矩阵。同一 SVD 因而兼顾降维和系数选择。
在左奇异坐标中,vj 的系数是 (ujTy)/σj。y 垂直列空间的部分无法拟合,留在残差;零右奇异方向则允许加入零空间向量。最小范数选择把自由坐标设为零,每个正奇异值只需一次除法。若只保留部分正奇异方向,解的就是该张成空间内的受限拟合,不是原来不受限的最小范数最小二乘问题。
例题
5. 解决欠定拟合
设 M=[1 2]、y=5,则 M+=(1,2)T/5、z∗=(1,2)T。所有精确解是 z=(5−2t,t)T,且
∥z∥22=(5−2t)2+t2=5(t−2)2+5.在 t=2 达到最小值,核对了 z∗ 及平方范数 5。与它的差为 (t−2)(−2,1)T,正是垂直 (1,2)T 的零空间方向。
计算得分与重建
以下程序实现第一个例子。数值 SVD 返回的是 V 的转置,所以 Vt 的各行存放载荷方向。
import numpy as np
X = np.array([[12., 5.], [8., 5.], [10., 6.], [10., 4.]])
mean = X.mean(axis=0)
A = X - mean
U, s, Vt = np.linalg.svd(A, full_matrices=False)
k = 1
scores = A @ Vt[:k].T
reconstruction = scores @ Vt[:k] + mean
fractions = s**2 / np.sum(s**2)
squared_error = np.sum((X - reconstruction)**2)
print(fractions) # [0.8 0.2]
print(squared_error) # 2.0, up to rounding
数值程序可以同时反转一个载荷和对应得分列的符号,两者相乘的重建不变。比较实现时,可检查子空间、解释方差和重建矩阵。若截断位置两侧的奇异值相同,最优保留子空间也可能不唯一;若该处存在严格间隔,子空间就确定,虽然基向量的符号仍可改变。
常见错误
常见错误
把奇异值直接当成方差比例
第一例中,未平方的比例 22/(22+2)=2/3 不是解释方差比例,正确值是 8/(8+2)=4/5。同时要区分:Vk 的列描述特征方向,AVk 的行描述观测坐标。混淆两者通常首先造成矩阵维数不符。
总结
先中心化各列、选定距离度量,再对中心化矩阵作 SVD。右奇异向量提供载荷,乘上这些方向就得到得分。协方差特征值等于奇异值平方除以 n−1。前几个主成分同时使保留方差最大、正交平方重建误差最小;返回原特征坐标时,要加回均值。
练习
思考检查
1. 四个观测的例子只保留一个主成分。求解释比例、总平方重建误差,以及新观测 (11,7) 的重建。
思考检查
2. 某中心化矩阵的正奇异值是 6、3、1。要至少保留 90% 方差,最少需要保留多少秩?余下平方重建误差是多少?
思考检查
3. 某协方差矩阵的特征值是 5、5、0。第一载荷是否唯一?前二维主子空间是否唯一?
区分保留空间内的重复值,以及跨过截断位置的重复值。
解答
解答 · 1. 投影并加回均值
解释比例是 4/5,平方误差是 2。新观测的中心化坐标为 (1,2),第一得分为 1。中心化重建是 (1,0),加回 (10,5) 后得到 (11,5)。
解答 · 2. 从平方谱选择秩
平方总和为 36+9+1=46。一个主成分保留 36/46,低于 0.9;两个保留 45/46,高于 0.9,故最少保留秩二。被舍弃的平方奇异值是 1,也就是余下总平方重建误差。
解答 · 3. 基可改变,子空间确定
特征值五的特征空间中,每个单位向量都使方差最大,所以第一载荷除符号外仍不唯一。完整二维特征空间则唯一,因为其特征值与零有间隔。任意正交归一基都保留总方差 10;更换基只会旋转得分,不改变重建。
相关笔记