降维算法学习之PCA理论推导

PCA算法简述

  来,快上车,老铁。主成分分析(Principal Component Analysis, PCA)是最常用的线性降维方法,它是通过某种线性投影,将高维数据映射到低维空间中表示,并期望在所投影的维度上数据方差最大,以此使用较少的数据维度,同时保留住较多的原数据点的特性。

PCA本质是借助正交变换方法,将其分量相关的随机向量转化为其分量不相关的新随机向量:

降维算法学习之PCA理论推导_第1张图片

  其实,从上图可以看出:PCA降维就是通过一种投影映射关系将其数据特征冗余最大程度消除,同时数据特征之间的相关性较低,比较容易区分开来。

PCA算法计算步骤

输入:样本集合 X = { x 1 , x 2 , . . . , x m } X=\{x_1,x_2,...,x_m\} X={x1,x2,...,xm}

1. 对所有样本的相同维度进行中心化(去均值): x i ← x i − 1 m ∑ i m x i x_i\leftarrow x_i-\frac{1}{m}\sum^{m}_ix_i xixim1imxi

2.计算样本的协方差矩阵 C = 1 m − 1 S ∗ S T C=\frac{1}{m-1}S*S^{T} C=m11SST

  其中 S S S X X X去均值后的矩阵;

3. 对协方差矩阵 C C C做特征分解,求取特征值 λ = { λ 1 , λ 2 , . . . , λ m } λ=\{λ_1,λ_2,...,λ_m\} λ={λ1,λ2,...,λm}与特征向量 W = { w 1 , w 2 , . . . , w m } W=\{w_1,w_2,...,w_m\} W={w1,w2,...,wm}

4.按照特征值大小排序,取最大的 d d d个特征值对应的特征向量 w 1 , w 2 , . . . , w d w_1,w_2,...,w_d w1,w2,...,wd

输出:投影矩阵 W = ( w 1 , w 2 , . . . , w d ) W=(w_1,w_2,...,w_d) W=(w1,w2,...,wd)

PCA算法示例

  假设样本集合 X X X中的每个样本为二维平面坐标点,其中 x 1 = ( 1 , 1 ) x_1=(1,1) x1=(1,1) x 2 = ( 1 , 3 ) x_2=(1,3) x2=(1,3) x 3 = ( 2 , 3 ) x_3=(2,3) x3=(2,3) x 4 = ( 4 , 4 ) x_4=(4,4) x4=(4,4) x 5 = ( 2 , 4 ) x_5=(2,4) x5=(2,4),那么样本集合:
X = ( 1 1 2 4 2 1 3 3 4 4 ) X= \left( \begin{matrix} 1 & 1 & 2 & 4 & 2 \\ 1 & 3 & 3 &4 & 4\\ \end{matrix} \right) X=(1113234424)

参数解释:
  其中集合矩阵 X X X第一行为: { x 1 , x 2 , x 3 , x 4 , x 5 } \{x_1,x_2,x_3,x_4,x_5\} {x1,x2,x3,x4,x5} x x x轴维度的数据, X X X的第二行为: { x 1 , x 2 , x 3 , x 4 , x 5 } \{x_1,x_2,x_3,x_4,x_5\} {x1,x2,x3,x4,x5} y y y轴维度的数据。

1. 对样本集合X进行中心化,得到矩阵S:

样本集合 X = { x 1 , x 2 , x 3 , x 4 , x 5 } X=\{x_1,x_2,x_3,x_4,x_5\} X={x1,x2,x3,x4,x5} x x x轴维度的数据均值为:

x ‾ = 1 m ∑ i = 1 m x i = 1 5 ( 1 + 1 + 2 + 4 + 2 ) = 2 \overline{x}=\frac{1}{m}\sum^{m}_{i=1}x_i=\frac{1}{5}(1+1+2+4+2)=2 x=m1i=1mxi=51(1+1+2+4+2)=2

样本集合 X = { x 1 , x 2 , x 3 , x 4 , x 5 } X=\{x_1,x_2,x_3,x_4,x_5\} X={x1,x2,x3,x4,x5} y y y轴维度的数据均值为:

y ‾ = 1 m ∑ i = 1 m y i = 1 5 ( 1 + 3 + 3 + 4 + 4 ) = 3 \overline{y}=\frac{1}{m}\sum^{m}_{i=1}y_i=\frac{1}{5}(1+3+3+4+4)=3 y=m1i=1myi=51(1+3+3+4+4)=3

因此样本集合 X X X第一行每一个元素减去均值 x ‾ \overline{x} x第二行的每一个元素减去均值 y ‾ \overline{y} y,得到矩阵 S S S.

S = ( − 1 − 1 0 2 0 − 2 0 0 1 1 ) S= \left( \begin{matrix} -1 & -1 & 0 & 2 & 0 \\ -2 & 0 & 0 & 1 & 1\\ \end{matrix} \right) S=(1210002101)

2. 样本的协方差矩阵 C = 1 m − 1 S ∗ S T C=\frac{1}{m-1}S*S^{T} C=m11SST

C = 1 m − 1 S ∗ S T = 1 4 ∗ ( − 1 − 1 0 2 0 − 2 0 0 1 1 ) ∗ ( − 1 − 1 0 2 0 − 2 0 0 1 1 ) = ( 1.5 1 1 1.5 ) \begin{aligned} C=&\frac{1}{m-1}S*S^{T}\\ =&\frac{1}{4}* \left( \begin{matrix} -1 & -1 & 0 & 2 & 0 \\ -2 & 0 & 0 & 1 & 1\\ \end{matrix} \right)* \left( \begin{matrix} -1 & -1 & 0 & 2 & 0 \\ -2 & 0 & 0 & 1 & 1\\ \end{matrix} \right)\\ =& \left( \begin{matrix} 1.5 & 1 \\ 1 & 1.5 \\ \end{matrix} \right) \end{aligned} C===m11SST41(1210002101)(1210002101)(1.5111.5)

3.对协方差矩阵 C C C做特征分解,求出特征值与特征向量:

特征值为: λ 1 = 0.5 λ_1=0.5 λ1=0.5 λ 2 = 2.5 λ_2=2.5 λ2=2.5

其中,特征值 λ 1 λ_1 λ1 λ 2 λ_2 λ2对应的特征向量为:

w 1 = ( − 1 2 1 2 ) , w 2 = ( 1 2 1 2 ) w_1= \left( \begin{matrix} \frac{-1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} \\ \end{matrix} \right), w_2= \left( \begin{matrix} \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} \\ \end{matrix} \right) w1=(2 12 1),w2=(2 12 1)

协方差矩阵 C C C特征值详细求解过程:

(1) C = ( 1.5 1 1 1.5 ) C= \left( \begin{matrix} 1.5 & 1 \\ 1 & 1.5 \\ \end{matrix} \right) \tag{1} C=(1.5111.5)(1)
特征值求取如下:
(2) f ( λ ) = ∣ λ E − C ∣ = ∣ λ − 1.5 − 1 − 1 λ − 1.5 ∣ = ( λ − 1.5 ) 2 − 1 = 0 \begin{aligned} f(λ)=& |λE-C|\\ =&\left| \begin{matrix} λ-1.5 & -1 \\ -1 & λ-1.5 \\ \end{matrix} \right|\\ =& (λ-1.5)^{2}-1=0 \end{aligned} \tag{2} f(λ)===λECλ1.511λ1.5(λ1.5)21=0(2)
则可以得出 λ λ λ的值为: λ 1 = 0.5 λ_1=0.5 λ1=0.5 λ 2 = 2.5 λ_2=2.5 λ2=2.5.

计算特征值对应的特征向量 w 1 w_1 w1 w 2 w_2 w2

(i=1或2) w i = ( β 1 β 2 ) w_i= \left( \begin{matrix} β_1 \\ β_2 \\ \end{matrix} \right) \tag{i=1或2} wi=(β1β2)(i=12)

根据特征向量垂直于 ∣ λ E − C ∣ |λE-C| λEC,则可以得到:

∣ λ E − C ∣ ∗ w i = 0 |λE-C|*w_i=0 λECwi=0

则,我们可以得到:

( λ − 1.5 ) ∗ β 1 − β 2 = 0 (λ-1.5)*β_1-β_2=0 (λ1.5)β1β2=0

β 1 2 + β 2 2 = 1 β_1^{2}+β_2^{2}=1 β12+β22=1

λ = 0.5 λ=0.5 λ=0.5时候, β 1 = − 1 2 β_1=\frac{-1}{\sqrt{2}} β1=2 1 β 2 = 1 2 β_2=\frac{1}{\sqrt{2}} β2=2 1,因此:

w 1 = ( − 1 2 1 2 ) w_1= \left( \begin{matrix} \frac{-1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} \\ \end{matrix} \right) w1=(2 12 1)

同理, w 2 w_2 w2计算为当特征值 λ = 2.5 λ=2.5 λ=2.5的时候:

w 2 = ( 1 2 1 2 ) w_2= \left( \begin{matrix} \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} \\ \end{matrix} \right) w2=(2 12 1)

至此,特征值与特征向量求解结束。

4.特征值 λ λ λ按照从大到小排序,对应的特征向量组合成投影矩阵:

投影成一维,我们去 λ 2 = 2.5 λ_2=2.5 λ2=2.5的特征向量

W = w 2 W=w_2 W=w2

最后,投影输出 Y = W T C Y=W^{T}C Y=WTC

Y = W T X = ( 1 2 , 1 2 ) ∗ ( − 1 − 1 0 2 0 − 2 0 0 1 1 ) = ( − 3 2 , − 1 2 , 0 , 3 2 , − 1 2 ) \begin{aligned} Y=&W^{T}X\\ =& (\frac{1}{\sqrt{2}}, \frac{1}{\sqrt{2}})* \left( \begin{matrix} -1 & -1 & 0 & 2 & 0 \\ -2 & 0 & 0 & 1 & 1\\ \end{matrix} \right)\\ =& (\frac{-3}{\sqrt{2}}, \frac{-1}{\sqrt{2}}, 0, \frac{3}{\sqrt{2}}, \frac{-1}{\sqrt{2}}) \end{aligned} Y===WTX(2 1,2 1)(1210002101)(2 3,2 1,0,2 3,2 1)

至此,PCA降维整个计算过程就结束啦: Y Y Y即为样本集合 X X X投影后的降维输出。

下面通过坐标变换示意图显示PCA投影过程:

降维算法学习之PCA理论推导_第2张图片

  上图中,①表示样本集合 X X X中的每个样本 x i x_i xi坐标去中心化为第二个坐标轴上面的 c i c_i ci;然后过程②对 c i c_i ci构成的矩阵求出一维投影线,第三个坐标系中的 x i x_i xi就是投影后的坐标表示。

  举例:第一个坐标系中 x 1 = ( 1 , 1 ) x_1=(1,1) x1=(1,1),经过PCA投影降维后 x 1 = − 3 2 x_1=\frac{-3}{\sqrt{2}} x1=2 3,维度从两个坐标编程一个坐标进行表示,因此降低维度。

总结

  本篇博客只是简单介绍一下降维算法PCA的原理及其推导过程,当然PCA算法应用过程中还有许多细节需要考虑。例如:PCA算法中K维度的参数选择?为什么PCA需要求解协方差进行投影降维?PCA算法的优缺点等等。后续将会进行进一步的分析。如果只是将PCA用在维度降低应用下,SVD奇异值分解可以理解为基础的维度降低算法,PCA算是SVD的一种特例。关于SVD是如何进行分解的,可以参考我的另外一篇博文,算法学习之SVD理论推导。最后,如有错误,还请批评指正!

参考文献

李航等 <统计学习方法>
https://blog.csdn.net/shizhixin/article/details/51181379

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