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

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

motivation

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

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

Method

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

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

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

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

reference

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

你可能感兴趣的:(机器学习)