主成分分析(PCA)证明推导

pca和svd都是降维常用的方法。今天回顾一下pca的原理。

motivation

现在有m个数据,每个样本有n个属性值,样本用矩阵表示为XRn×mX \in R^{n\times m}。每一列是一个样本。
方便接下来的讲述,我们把XX默认是做过零均值化的。那么X的属性的协方差矩阵C等于:
C=1mXXTRn×nC=\frac{1}{m}XX^T \in R^{n\times n}

我们想用一组新的坐标表示X,同时新的坐标数目更少(属性更少)。且在这些坐标下,X投影到这些坐标的值的方差比较大(最大的叫主元,一般取方差前k大的轴)。
以上的出发点是遵循最大可分性原则。
假设PRn×nP \in R^{n\times n}是投影矩阵,线性变换之后的样本是Y=PXY=PX 当然此时YY还是n维属性的。我们先不考虑降低维度的事情,先想如何能把Y的属性的方差最大化。

Method

想最大化Y的属性的方差,其实等价于最小化Y的各个属性之间的协方差。因为各个属性之间没有相关,才能让属性差异性最大,说明属性分布的更加离散。
主成分分析(PCA)证明推导
因为正交变换不改变向量之间的相对位置,所以当样本的某种属性值降低,其他属性必然上升,要保持和原点的相对位置不变。
主成分分析(PCA)证明推导
上图a和b的横纵坐标值在发生变化,当x轴坐标值小了,必然y轴坐标值大了。

为了让变换之后的样本的协方差最大,先求出YY的协方差DD
D=1mYYT=1mPXXTPT=P1mXXTPT=PCPTD = \frac{1}{m}YY^T \\ =\frac{1}{m}PXX^TP^T\\ =P\frac{1}{m}XX^TP^T\\ =PCP^T
理想中的D应该是对角阵,其他位置都是协方差,主对角线是属性的方差。那么问题就来到了如何找到一个P能让D是对角矩阵。

注意C是n维方阵,且实对称。实对称矩阵一定可以正交对角化。所以P就是能让C对角化的正交矩阵,那么D就是C的特征值了
D=diag{λ1,λ2,...λn}λ1>=λ2>=...D =diag \left \{\lambda_1, \lambda_2,... \lambda_n \right \},\lambda_1>= \lambda_2 >=...
P就是特征值按照位置对应的特征向量。
接着我们把D拆解:
D=PCPTλ1p1p1T+λ2p2p2T+...λkpkpkTD=PCP^T\\ \approx \lambda_1p_1p_1^T + \lambda_2p_2p_2^T + ... \lambda_k p_kp_k^T
我们取前k大的特征值和对应的特征向量,能得到D的近似,那我们干脆就用这些特征向量,构成P,所以P的维度是k×nk\times n ,然后就得到了我们需要的变换矩阵P了。

实际上,还可以通过拉格朗日乘子法进行推导,也能得到相同的P。

reference

如何通俗易懂地讲解什么是 PCA 主成分分析?
机器学习】降维——PCA(非常详细)