SVD和PCA详细原理以及联系(包含公式推导)

初始假设

假设XRn×dX \in R^{n \times d},即为nn个样本,dd维的矩阵,将每个数据矢量的条目合并,使得XiT=(Xi1,,Xid)X_i^T = (X_i1, \ldots, X_id)。 在将这些向量放入数据矩阵之前,我们实际上会减去数据的平均值,即:μ=1ni=1nXi=(i=1nXi1,,Xid)T\mu = \frac{1}{n} \sum_{i=1}^n X_i = (\sum_{i=1}^n X_i1, \ldots, X_id)^T
然后用每一列减去μT\mu^T,得到零中心向量作为矩阵的行:
X=(X1TμTX2TμTXnTμT)X = \begin{pmatrix} X_1^T - \mu ^T \\ \\ X_2^T - \mu ^T \\ \ldots \\ \\ X_n^T - \mu ^T \end{pmatrix}
样本的协方差SS为:
S=1n1i=1n(Xiμ)(Xiμ)T=1n1XTXS = \frac{1}{n - 1} \sum_{i=1}^n (X_i - \mu )(X_i - \mu ) ^T = \frac{1}{n - 1} X ^T X

主成分分析(PCA)

主成分分析(PCA)是一种数据降维技巧,它能将大量相关变量转化为一组很少的不相关变
量,这些无关变量称为主成分。例如,使用PCA可将30个相关(很可能冗余)的环境变量转化为5个无关的成分变量,并且尽可能地保留原始数据集的信息,即使这些成分变量对“原始方差”的贡献程度尽可能大。
PCA是找到一个kdk \leq d的单位向量的集合ViRd(i=1,2,,k)V_i \in R^d(i = 1,2, \ldots, k),称为主成分PC,其满足:投影到由ViV_i确定方向上的数据集方差被最大化,且ViV_i被选择与之正交。
现在,将矢量XRdX \in R^d投影到由任何ViV_i确定的方向上,可以简单的写成点积ViTXV_i^T ·X,这意味着投影到第一个主成分V1V_1上的数据集的方差可以写为:
1n1i=1n(V1TXiV1Tμ)2=V1TSV1\frac{1}{n - 1} \sum_{i = 1}^n (V_1 ^TX_i - V_1 ^T \mu ) ^2 = V_1 ^T ·S·V_1
V1TV1=1V_1^T V_1= 1的前提下取最大化V1V_1的值,此时有:SV1=λ1V1S V_1 = \lambda_1 V_1,意味着V1V_1是协方差矩阵S的特征向量,相应的特征值恰好等于沿V1V_1数据集的方差:
V1TSV1=λ1 V_1^ T S V_1 = \lambda_1
将数据投影到新方向V2V_2上继续此过程,同时强制要求V1V_1V2V_2正交,然后在V3V_3V1V_1V2V_2正交的条件下寻找V3V_3,以此类推,最终的结果是XX的第一个kk主成分恰好对应由它们特征向量排序的协方差矩阵SS的特征向量,特征值恰好等于沿对应特征向量的数据集方差。
此结果表明了SS上有一整套正交的特征向量,SS为对称矩阵,满足S=STS = S^T,取k=dk = d个主成分,构造一个d×dd \times d的矩阵VV,列为SS的特征向量,SS为:
S=VVT=i=1rλiViViT(=diag(λ1,,λd) S = V \wedge V^T = \sum_{i = 1} ^r \lambda_i V_i V_i ^T (\land = diag(\lambda_1, \ldots, \lambda_d)
SVD和PCA详细原理以及联系(包含公式推导)

奇异值分解(SVD)

奇异值分解上一种矩阵分解方法,相较于特征值分解只能针对方阵,它可以分解几乎任何矩阵,是目前为止可以说是最好的矩阵分解方法。任意矩阵ARn×dA \in R^{n \times d}的奇异值分解可以看作为线性变换时,AA将单位球面SdRdS^d \subset R ^d映射到RnR^n中的超椭圆:
SVD和PCA详细原理以及联系(包含公式推导)
椭圆ASdRnAS^d \in R ^n的半轴长度σi\sigma_iAA的奇异值,沿着半轴的单位向量uiu_i称为AA的“左”奇异向量,单位向量viv_iAA的“右”奇异向量,r=rank(A)r = rank(A),即r是A的秩。下为奇异值分解的具体方法:
U=[u1,,un]Rn×nU = [u_1, \ldots, u_n] \in R^{n \times n}Σ=diag[σ1,,σn]Rn×d\Sigma = diag[\sigma_1, \ldots, \sigma_n] \in R^{n \times d}V=[v1,,vd]Rd×dV = [v_1, \ldots, v_d] \in R^{d \times d}AV=UΣAV = U \Sigma故有:A=UΣVTA = U \Sigma V^TSVD和PCA详细原理以及联系(包含公式推导)
即将矩阵AA分解为右边三个矩阵相乘,其中,UVU、V为正交矩阵,Σ\Sigma只有对角元素而且对角元素是从大到小排列的,这些对角元素称为奇异值。在几何中,我们可以把矩阵看做空间上的线性变换,而奇异值分解的几何含义是:对于任何的一个矩阵,我们都能找到一组坐标轴,它是由原来的坐标轴通过旋转和缩放得到的。奇异值的含义就是这组变换后新的坐标轴的长度。

SVD和PCA详细原理以及联系(包含公式推导)
矩阵AA的作用是将一个向量从VV这组正交向量空间中旋转到UU空间,并按照Σ\Sigma在各个方向上做了缩放,缩放倍数就是奇异值。 由简单的矩阵乘法可得:
ATA=VΣ2VTA^T A = V \Sigma^2 V^TAAT=UΣ2UTA A^T = U \Sigma^2 U^T因此VVATAA^T A的特征向量,UUAATA A^T的特征向量,奇异值的平方σ2\sigma^2ATAA^T AAATA A^T共同的特征值,再将奇异值从大到小排列,前kk个奇异值可以近似描述矩阵A=UΣVTA = U \Sigma V^T

PCA与SVD的联系

PCA的运行原理很简单,就是对原始的空间中顺序地找一组组相互正交的坐标轴,第一个轴是使得方差最大的,第二个轴是在与第一个轴正交的平面中使得方差最大的,第三个轴是在与第一、二个轴正交的平面中方差最大的。这样假设在N维空间中,我们可以找到N个这样的坐标轴,我们取前r个去近似这个空间(因为维数越靠后的空间轴的重要性是依次降低的),这样就从一个N维的空间转化到到r维的空间了,虽然这样做会使得数据有所损失,但是我们选择的r个坐标轴能够使得空间的压缩使得数据的损失最小。SVD得出的奇异向量也是从奇异值由大到小排列的,从PCA的观点来看,就是方差最大的坐标轴就是第一个奇异向量,方差次大的坐标轴就是第二个奇异向量,依此类推,由于推导公式比较繁琐,故下面我用手写的方式说明二者之间的联系:SVD和PCA详细原理以及联系(包含公式推导)
如果要对行进行压缩只需要在A=UΣVTA = U \Sigma V^T的左边乘上UU的转秩即可。可以说,PCA是对SVD的一个包装和使用,如果我们实现了SVD,那也就自然而然实现了PCA,而且相较于单纯的对ATAA^T A进行特征值分解只得到一个方向上的PCA更好的地方是,有了SVD,我们就可以得到两个方向的PCA。

由于本人所学有限,如有错误,还望指正。