主成分分析的方法有两种,一种是相关矩阵的特征值分解,;另一种是样本矩阵的奇异值分解。
前面我们学过了利用协方差矩阵来使用PCA来降维,将数据投影到新超平面空间,主要是计算数据的协方差矩阵,然后求协方差矩阵的特征值和特征向量,将特征值按照大到小的顺序排列,然后删掉较小的特征值,将数据投影到特征空间。现在来了解一下奇异值分解。
奇异值分解
Am×n=Um×nΣn×nVn×nA_{m\times n}=U_{m\times n}\Sigma_{n\times n}V_{n\times n}Am×n=Um×nΣn×nVn×n
其中U,V分别是m,n阶的正交矩阵,A为数据矩阵。Σ\SigmaΣ是m×nm\times nm×n矩形对角矩阵,其对角线元素非负,按降序排列。
那么U,Σ,VU,\Sigma,VU,Σ,V应该怎么求得呢?
- 确定V,ΣV,\SigmaV,Σ
- 构造n阶正交实矩阵V,
矩阵A是m×nm\times nm×n实矩阵,则ATAA^TAATA是n阶实对称矩阵(实对称矩阵必能相似对角化),即有n个线性无关的特征向量,所以必然存在一个n阶正交矩阵V使得ATAA^TAATA对角化,即V(ATA)VT=ΛV(A^TA)V^T=\LambdaV(ATA)VT=Λ, - 可设V的正交向量对应的特征值的降序排列是:
λ1≥λ2≥...≥λn≥0\lambda_1\ge\lambda_2\ge...\ge\lambda_n\ge0λ1≥λ2≥...≥λn≥0 - 计算其平方根,实际就是矩阵A的奇异值。
σi=λi,1≤i≤n\sigma_i=\sqrt{\lambda_i},\quad1\le i\le nσi=λi,1≤i≤n
设A的秩为r,则ATAA^TAATA的秩也为r,因为ATA是对称矩阵A^TA是对称矩阵ATA是对称矩阵(实对称矩阵可看作二次型),它的值等于正的特征值的个数,所以:
λ1≥λ2≥...≥λr,λr+1=...=λn=0\lambda_1\ge\lambda_2\ge...\ge\lambda_r,\quad\lambda_{r+1}=...=\lambda_n=0λ1≥λ2≥...≥λr,λr+1=...=λn=0
令V1=[v1,...,vr],V2=[vr+1,...,vn]V_1=[v_1,...,v_r],V_2=[v_{r+1},...,v_n]V1=[v1,...,vr],V2=[vr+1,...,vn]
设v1,...,vr对应的ATA正特征值的特征向量,vr+1,...,vnv_1,...,v_r对应的A^TA正特征值的特征向量,v_{r+1},...,v_nv1,...,vr对应的ATA正特征值的特征向量,vr+1,...,vn是特征值为零的特征向量,V=[V1,V2]V=[V_1,V_2]V=[V1,V2],这就是奇异值分解中的V矩阵。
对于特征值为零的向量有ATAvj=0×vj=0,j>rA^TAv_j=0\times v_j=0,\quad j\gt rATAvj=0×vj=0,j>r,所以有AV2=0AV_2=0AV2=0
因为V是正交矩阵,III表示单位矩阵,所以I=VVT=V1V1T+V2V2T,A=AI=AV1V1T+AV2V2T=AV1V1TI=VV^T=V_1V_1^T+V_2V_2^T,\\A=AI=AV_1V_1^T+AV_2V_2^T=AV_1V_1^TI=VVT=V1V1T+V2V2T,A=AI=AV1V1T+AV2V2T=AV1V1T - 特征值对应的奇异值有:
σ1≥σ2≥...≥σr,σr+1=...=σn=0\sigma_1\ge\sigma_2\ge...\ge\sigma_r,\quad\sigma_{r+1}=...=\sigma_n=0σ1≥σ2≥...≥σr,σr+1=...=σn=0
Σ1=[σ1σ2...σr]\Sigma_1=\begin{bmatrix}\sigma_1&&&\\&\sigma_2&&\\&&...&\\&&&\sigma_r\end{bmatrix}Σ1=⎣⎢⎢⎡σ1σ2...σr⎦⎥⎥⎤
Σ=[Σ1000]\Sigma=\begin{bmatrix}\Sigma_1&0\\0&0\end{bmatrix}Σ=[Σ1000]
- 确定UUU
令uj=1σjAvj,j=1,2,3,..,ru_j=\frac{1}{\sigma_j}Av_j,\quad j=1,2,3,..,ruj=σj1Avj,j=1,2,3,..,r
U1=[u1,...,ur]U_1=[u_1,...,u_r]U1=[u1,...,ur]
令{ur+1,ur+2,...,un}\{u_{r+1},u_{r+2},...,u_n\}{ur+1,ur+2,...,un}为ATA^TAT的一组标准正交基,并令U2=[ur+1,ur+2,...,un]U_2=[u_{r+1},u_{r+2},...,u_n]U2=[ur+1,ur+2,...,un]
U=[U1,U2]U=[U_1,U_2]U=[U1,U2]
于是有:
UΣVT=[U1,U2][Σ1000][V1TV2T]=U1Σ1V1T=AV1V1T=AU\Sigma V^T=[U_1,U_2]\begin{bmatrix}\Sigma_1&0\\0&0\end{bmatrix}\begin{bmatrix}V_1^T\\V_2^T\end{bmatrix}=U_1\Sigma_1V_1^T=AV_1V_1^T=AUΣVT=[U1,U2][Σ1000][V1TV2T]=U1Σ1V1T=AV1V1T=A
- 性质
V的列向量是ATA的特征向量,U的列向量是AAT的特征向量,Σ的奇异值是ATA和AAT的特征值的平方根。A^TA的特征向量,U的列向量是AA^T的特征向量,\Sigma的奇异值是A^TA和AA^T的特征值的平方根。ATA的特征向量,U的列向量是AAT的特征向量,Σ的奇异值是ATA和AAT的特征值的平方根。
AV=UΣAV=U\SigmaAV=UΣ,正交矩阵有性质V−1=VTV^{-1}=V^TV−1=VT - 几何意义
对A矩阵的奇异值分解,V和U都是正交矩阵,其列向量构成了Rn\bm R^nRn空间的标准正交基,表示在Rn\bm R^nRn空间正交坐标系的旋转或反射变换,Σ\SigmaΣ的对角元素非负,表示原始正交坐标系坐标轴的σ1,...,σn\sigma_1,...,\sigma_nσ1,...,σn的缩放变换。 - 紧奇异值分解与截断奇异值分解
紧奇异值分解是与原始矩阵等秩的奇异值分解,即紧奇异值分解的对角矩阵Σr的秩与A,ATA的秩相等\Sigma_r的秩与A,A^TA的秩相等Σr的秩与A,ATA的秩相等,紧
截断奇异值分解是比原矩阵低秩的奇异值分解(类似于特征值分解)即截断奇异值分解的对角矩阵$\Sigma_r的秩比A,A^TA的秩低,实际应用中通常使用截断奇异值分解,截断奇异值分级是有损压缩。
奇异值分解是弗罗贝尼乌斯范数意义下(平方损失意义)下的矩阵最优近似。
本文章只介绍了奇异值计算的方法,若对推导过程感兴趣,可参考统计学习方法一书。