PCA的数学推导
原理介绍
PCA算法是一个用途非常广的降维手段,这种方法其实是一种特征提取方法(feature extraction),是对原始特征进行变化之后的降维压缩,需要注意的是,这并不是特征选择(feature selection)。PCA的基本思想就是,寻找一组正交基底,使得原始数据的空间发生变化,使得在新的空间的各个维度上方差最大化(通常认为,特征方差越大的特征,包含的信息越重要),总体可以概括为:降低特征空间维度;消除原有特征之间的相关度,减少数据信息的冗余。PCA需要解决的问题是,找到一组k维正交基底,使得新的特征内部方差最大,特征间相关程度最小,所以从这个角度上来看,PCA也是一个优化问题,下面的数学推导就将按照优化的步骤进行。
数学推导
假设我们有一个样本集,每个样本的特征为N,样本容量为p,那么我们用一个向量来表示这个样本集,每一个列向量为一个样本,每一行则为一个特征:
X = ( x 1 , x 2 , . . . , x p ) = ( x 1 1 , x 2 1 , . . . , x p 1 x 1 2 , x 2 2 , . . . , x p 2 . . . . . . x 1 N , x 2 N , . . . , x p N ) X = \begin{pmatrix} x_1,x_2,...,x_p \end{pmatrix} = \begin{pmatrix} x_11,x_21,...,x_p1 \\ x_12,x_22,...,x_p2 \\ ......\\ x_{1N},{x_2N},...,{x_pN} \end{pmatrix} X=(x1,x2,...,xp)=⎝⎜⎜⎛x11,x21,...,xp1x12,x22,...,xp2......x1N,x2N,...,xpN⎠⎟⎟⎞
显然,向量X是一个Np的矩阵,每一个 x i x_i xi为一个N1的矩阵。
我们希望获得一个M个N维分量A,A的形状为M*N,与 x i x_i xi相乘之后,即可将 x i x_i xi变化为一个M维的向量,实现降维的目的:
A = ( a 1 a 2 . . . a M ) A= \begin{pmatrix} a_1 \\ a_2 \\ ... \\ a_{M} \\ \end{pmatrix} A=⎝⎜⎜⎛a1a2...aM⎠⎟⎟⎞
其中,每一个 a i a_i ai都是一个1*N维的行向量。接下我们对原始数据进行去中心化处理,这样的目的是为了消除量纲的影响,均值 X ˉ \bar{X} Xˉ的计算如下:
X ˉ = 1 p b ∑ i = 1 p x i \bar{X}=\frac 1pb\sum_{i=1}^{p}{x_i} Xˉ=p1bi=1∑pxi
最后,我们得到的降维结果为:
Y = A ( X − X ˉ ) = ( a 1 a 2 . . . a M ) ( x 1 , x 2 , . . . , x p ) = ( a 1 ( x 1 − X ˉ ) , a 1 ( x 2 − X ˉ ) , . . . , a 1 ( x p − X ˉ ) a 1 ( x 2 − X ˉ ) , a 1 ( x 2 − X ˉ ) , . . . , a 1 ( x 2 − X ˉ ) . . . . a M ( x 1 − X ˉ ) , a M ( x 2 − X ˉ ) , . . . , a M ( x p − X ˉ ) ) Y= A(X-\bar{X})= \begin{pmatrix} a_1 \\ a_2 \\ ... \\ a_M \\ \end{pmatrix} \begin{pmatrix} x_1,x_2,...,x_p \end{pmatrix}= \begin{pmatrix} a_1(x_1-\bar{X}),a_1(x_2-\bar{X}),...,a_1(x_p-\bar{X}) \\ a_1(x_2-\bar{X}),a_1(x_2-\bar{X}),...,a_1(x_2-\bar{X}) \\ .... \\ a_M(x_1-\bar{X}),a_M(x_2-\bar{X}),...,a_M(x_p-\bar{X}) \\ \end{pmatrix} Y=A(X−Xˉ)=⎝⎜⎜⎛a1a2...aM⎠⎟⎟⎞