主成分分析(Principal Component Analysis,PCA)

输入: 原始数据 X ∈ R d × n X∈R^{d×n} XRd×n 、降维后的维数k
输出: Y=PX,即降维后的数据。

算法步骤:

  • 1.将X的每一行进行零均值化,即减去这一行的均值
  • 2.求出协方差矩阵 C = 1 m X X T C=\frac1mXX^T C=m1XXT
  • 3.求出协方差矩阵的特征值和特征向量
  • 4.将特征向量按对应的特征值的大小从上到下按行排列成矩阵,取前k行组成矩阵P
  • 5. Y = P X Y=PX Y=PX即为降维后的数据
最优化方法的推导证明:

我们希望变化后的数据,协方差为0且数据内方差尽可能大

本点 x i x_i xi在基 w w w 下的坐标为: ( x i , w ) = x i T w (x_i,w)=x_i^Tw (xi,w)=xiTw ,于是我们有方差:

D ( x ) = 1 m ∑ i = 1 m ( x i T w ) 2                   = 1 m Σ i = 1 m ( x i T w ) T ( x i T w )           = 1 m Σ i = 1 m w T x i x i T w               = w T ( 1 m Σ i = 1 m x i x i T ) w D(x)=\frac1m∑_{i=1}^m(x_i^Tw)^2 \\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\frac1m Σ_{i=1}^m(x_i^Tw)^T(x_i^Tw) \\ \ \ \ \ \ \ \ \ \ =\frac1m Σ_{i=1}^mw^Tx_ix_i^Tw \\ \ \ \ \ \ \ \ \ \ \ \ \ \ =w^T(\frac1mΣ_{i=1}^mx_ix_i^T)w D(x)=m1i=1m(xiTw)2                 =m1Σi=1m(xiTw)T(xiTw)         =m1Σi=1mwTxixiTw             =wT(m1Σi=1mxixiT)w

我们看到 1 m Σ i = 1 m x i x i T \frac1mΣ_{i=1}^mx_ix_i^T m1Σi=1mxixiT 就是原样本的协方差,我们另这个矩阵为 Λ ,于是我们有:

{ m a x w T Λ w s . t . w T w = 1 \begin{cases} max{w^T Λw} \\ s.t.w^Tw=1 \end{cases} {maxwTΛws.t.wTw=1
然后构造拉格朗日函数:
L ( w ) = w t Λ w + λ ( 1 − w T w ) L(w) = w^t Λw + \lambda(1-w^Tw) L(w)=wtΛw+λ(1wTw)
对 w 求导:

Λ w = λ w Λw=\lambda w Λw=λw
此时我们的方差为:

D ( x ) = w T Λ w = λ w T w = λ D(x)=w^TΛw=\lambda w^Tw=\lambda D(x)=wTΛw=λwTw=λ
x 投影后的方差就是协方差矩阵的特征值。要找到最大方差也就是协方差矩阵最大的特征值,最佳投影方向就是最大特征值所对应的特征向量,次佳就是第二大特征值对应的特征向量,以此类推。

至此完成了基于最大可分性的 PCA 数学证明

你可能感兴趣的:(算法,数据降维)