PCA

PCA

主成分分析(PCA,Principle Component Analysis)就是在寻找使方差最大的方向,并在该方向上投影。(通常方差越大被视为越重要,方差也常常被称为能量)
Y = A ( X − X ‾ ) Y=A\left( X-\overline{X} \right) Y=A(XX)

Y Y Y是PCA的输出, a a a是投影的方向矩阵, X X X是PCA的输入, X ‾ \overline{X} X X X X的期望(通常也可以用均值代替 X ‾ = 1 P ∑ i = 1 P X i \overline{X}=\frac{1}{P}\sum_{i=1}^P{X_i} X=P1i=1PXi)。

其中: Y Y Y M × 1 M\times1 M×1矩阵, a a a M × N M\times N M×N矩阵, X X X X ‾ \overline{X} X N × 1 N \times1 N×1矩阵。可以看出,PCA把 N N N维的数据 X X X投影到了以 a i a_i ai为基向量的空间中得到 M M M维的 Y Y Y,完成降维。( M < N M<N M<N
A = [ a 1 a 2 ⋮ a M ] A=\left[ \begin{array}{c} a_1\\ a_2\\ \vdots\\ a_M\\ \end{array} \right] A=a1a2aM



PCA的推导

假设训练样本有 { X i } i = 1 ∼ P \left\{ X_i \right\} _{i=1\sim P} {Xi}i=1P,则 Y i Y_i Yi可以写成:
Y i = [ y i 1 y i 2 ⋮ y i M ] = [ a 1 ( X i − X ‾ ) a 2 ( X i − X ‾ ) ⋮ a M ( X i − X ‾ ) ]    ( i = 1 ∼ P ) \begin{aligned} Y_i=\left[ \begin{array}{c} y_{i1}\\ y_{i2}\\ \vdots\\ y_{iM}\\ \end{array} \right] =\left[ \begin{array}{c} a_1\left( X_i-\overline{X} \right)\\ a_2\left( X_i-\overline{X} \right)\\ \vdots\\ a_M\left( X_i-\overline{X} \right)\\ \end{array} \right] \,\, \quad\quad \left( i=1\sim P \right) \end{aligned} Yi=yi1yi2yiM=a1(XiX)a2(XiX)aM(XiX)(i=1P)

由主成分的含义, y i 1 y_{i1} yi1有最大的方差,因此我们需要最大化 v a r ( y 1 ) = ∑ i = 1 P ( y i 1 − y i 1 ‾ ) 2 var(y_{1})=\sum_{i=1}^P{\left( y_{i1}-\overline{y_{i1}} \right)^2} var(y1)=i=1P(yi1yi1)2

又因为:
y i 1 ‾ = 1 P ∑ i = 1 P y i 1 = 1 P ∑ i = 1 P a i ( X i − X ‾ ) = a i P ( ∑ i = 1 P X i − P X ‾ ) = 0 \overline{y_{i1}}=\frac{1}{P}\sum_{i=1}^P{y_{i1}}=\frac{1}{P}\sum_{i=1}^P{a_i\left( X_i-\overline{X} \right)}=\frac{a_i}{P}\left( \sum_{i=1}^P{X_i}-P\overline{X} \right) =0 yi1=P1i=1Pyi1=P1i=1Pai(XiX)=Pai(i=1PXiPX)=0
所以有:
v a r ( y 1 ) = ∑ i = 1 P ( y i 1 − y i 1 ‾ ) 2 = ∑ i = 1 P y i 1 2 = ∑ i = 1 P [ a 1 ( X i − X ‾ ) ] 2 = ∑ i = 1 P [ a 1 ( X i − X ‾ ) ] [ a 1 ( X i − X ‾ ) ] T = a 1 ∑ i = 1 P [ ( X i − X ‾ ) ( X i − X ‾ ) T ] a 1 T = a 1 Σ a 1 T \begin{aligned} var(y_{1})&=\sum_{i=1}^P{\left( y_{i1}-\overline{y_{i1}} \right) ^2}=\sum_{i=1}^P{y_{i1}^2}=\sum_{i=1}^P{\left[ a_1\left( X_i-\overline{X} \right) \right] ^2} \\ &=\sum_{i=1}^P{\left[ a_1\left( X_i-\overline{X} \right) \right] \left[ a_1\left( X_i-\overline{X} \right) \right] ^T} \\ &=a_1\sum_{i=1}^P{\left[ \left( X_i-\overline{X} \right) \left( X_i-\overline{X} \right) ^T \right]}a_1^T \\ &=a_1\varSigma a_1^T \end{aligned} var(y1)=i=1P(yi1yi1)2=i=1Pyi12=i=1P[a1(XiX)]2=i=1P[a1(XiX)][a1(XiX)]T=a1i=1P[(XiX)(XiX)T]a1T=a1Σa1T

其中 Σ = ∑ i = 1 P ( X i − X ‾ ) ( X i − X ‾ ) T \varSigma =\sum_{i=1}^P{ \left( X_i-\overline{X} \right) \left( X_i-\overline{X} \right) ^T } Σ=i=1P(XiX)(XiX)T称为 X X X的协方差矩阵。在上式中,我们不希望 y 1 y_{1} y1的大小和 a 1 a_1 a1有关,因为 a 1 a_1 a1只是一个基向量,控制投影的方向,我们希望 a 1 a_1 a1是一个单位向量。因此,上述求最大值变成以下优化问题:
max ⁡ : a 1 Σ a 1 T s . t . a 1 a 1 T = ∥ a 1 ∥ 2 = 1 \begin{aligned} &\max:\quad a_1\varSigma a_1^T \\ &s.t. \quad a_1a_1^T=\lVert a_1 \rVert ^2 =1 \end{aligned} max:a1Σa1Ts.t.a1a1T=a12=1

解上面优化问题可以使用拉格朗日乘数法:
E ( a 1 ) = a 1 Σ a 1 T − λ 1 ( a 1 a 1 T − 1 ) ∂ E ( a 1 ) ∂ a 1 = 2 ( Σ a 1 T − λ 1 a 1 T ) T = 0 \begin{aligned} &E\left( a_1 \right) =a_1\varSigma a_1^T-\lambda_1 \left( a_1a_1^T-1 \right) \\ &\frac{\partial E\left( a_1 \right)}{\partial a_1}=2\left( \varSigma a_1^T-\lambda_1 a_1^T \right) ^T=0 \end{aligned} E(a1)=a1Σa1Tλ1(a1a1T1)a1E(a1)=2(Σa1Tλ1a1T)T=0
得到: Σ a 1 T = λ 1 a 1 T \varSigma a_1^T=\lambda_1 a_1^T Σa1T=λ1a1T(即 a 1 T a_1^T a1T Σ \Sigma Σ的特征向量, λ 1 \lambda_1 λ1是对应的特征值)

目标函数变为:
v a r ( y 1 ) = a 1 Σ a 1 T = λ 1 a 1 a 1 T = λ 1 var(y_1)=a_1\varSigma a_1^T=\lambda_1 a_1a_1^T=\lambda_1 var(y1)=a1Σa1T=λ1a1a1T=λ1
则当 a 1 a_1 a1 Σ \Sigma Σ最大的特征值 λ 1 \lambda_{1} λ1对应的特征向量时, a 1 a_1 a1是此优化问题的解。

我们称 y 1 = a 1 ( X − X ‾ ) y_1=a_1\left( X-\overline{X} \right) y1=a1(XX) X X X的第一主成分, a 1 a_1 a1 Σ \Sigma Σ最大的特征值 λ 1 \lambda_{1} λ1对应的特征向量

我们接着求 a 2 a_2 a2,我们希望求出的主成分之间是不相关的,即:
c o v ( y 1 , y 2 ) = ∑ i P ( y i 1 − y i 1 ‾ ) ( y i 2 − y i 2 ‾ ) = ∑ i P y i 1 y i 2 = ∑ i P [ a 1 ( X i − X ˉ ) ] [ a 2 ( X i − X ˉ ) ] T = a 1 Σ a 2 T = 0 \begin{aligned} cov\left( y_1,y_2 \right) &=\sum_i^P{\left( y_{i1}-\overline{y_{i1}} \right) \left( y_{i2}-\overline{y_{i2}} \right)}=\sum_i^P{y_{i1}y_{i2}} \\ &=\sum_i^P{\left[ a_1\left( X_i-\bar{X} \right) \right] \left[ a_2\left( X_i-\bar{X} \right) \right] ^T} \\ &=a_1\varSigma a_2^T=0 \end{aligned} cov(y1,y2)=iP(yi1yi1)(yi2yi2)=iPyi1yi2=iP[a1(XiXˉ)][a2(XiXˉ)]T=a1Σa2T=0
同理,由 c o v ( y 2 , y 1 ) = 0 cov\left( y_2,y_1 \right)=0 cov(y2,y1)=0推出 a 2 Σ a 1 T = 0 a_2\varSigma a_1^T=0 a2Σa1T=0,且由上面的推导可知, a 2 Σ a 1 T = λ 1 a 2 a 1 T = 0 a_2\varSigma a_1^T=\lambda _1a_2a_1^T=0 a2Σa1T=λ1a2a1T=0推出 a 2 a 1 T = 0 a_2a_1^T=0 a2a1T=0,即 a 1 a_1 a1 a 2 a_2 a2正交。

求解 a 2 a_2 a2变成了下列优化问题:

max ⁡ : a 2 Σ a 2 T s . t . a 2 a 2 T = ∥ a 2 ∥ 2 = 1 , a 1 a 2 T = a 2 a 1 T = 0 \begin{aligned} &\max :\quad a_2\varSigma a_{2}^{T} \\ &s.t.\quad a_2a_{2}^{T}=\lVert a_2 \rVert ^2=1,a_1a_{2}^{T}=a_2a_{1}^{T}=0 \end{aligned} max:a2Σa2Ts.t.a2a2T=a22=1,a1a2T=a2a1T=0
解上面优化问题可以使用拉格朗日乘数法:
E ( a 2 ) = a 2 Σ a 2 T − λ 2 ( a 2 a 2 T − 1 ) − β a 1 a 2 T ∂ E ( a 2 ) ∂ a 2 = ( 2 Σ a 2 T − 2 λ 2 a 2 T − β a 1 T ) T = 0 \begin{aligned} &E\left( a_2 \right) =a_2\varSigma a_{2}^{T}-\lambda _2\left( a_2a_{2}^{T}-1 \right) -\beta a_1a_{2}^{T} \\ &\frac{\partial E\left( a_2 \right)}{\partial a_2}=\left( 2\varSigma a_{2}^{T}-2\lambda_2 a_{2}^{T}-\beta a_{1}^{T} \right) ^T=0 \end{aligned} E(a2)=a2Σa2Tλ2(a2a2T1)βa1a2Ta2E(a2)=(2Σa2T2λ2a2Tβa1T)T=0
得到:

( 2 Σ a 2 T − 2 λ 2 a 2 T − β a 1 T ) T = 2 a 2 Σ T − 2 λ 2 a 2 − β a 1 = 2 a 2 Σ − 2 λ 2 a 2 − β a 1 = 0 ( 2 a 2 Σ − 2 λ 2 a 2 − β a 1 ) a 1 T = 2 a 2 Σ a 1 T − 2 λ 2 a 2 a 1 T − β a 1 a 1 T = − β = 0 \begin{aligned} \left( 2\varSigma a_{2}^{T}-2\lambda _2a_{2}^{T}-\beta a_{1}^{T} \right) ^T&=2a_2\varSigma ^T-2\lambda _2a_2-\beta a_1=2a_2\varSigma -2\lambda _2a_2-\beta a_1=0 \\ \left(2 a_2\varSigma -2\lambda _2a_2-\beta a_1 \right) a_{1}^{T}&=2a_2\varSigma a_{1}^{T}-2\lambda _2a_2a_{1}^{T}-\beta a_1a_{1}^{T}=-\beta =0 \end{aligned} (2Σa2T2λ2a2Tβa1T)T(2a2Σ2λ2a2βa1)a1T=2a2ΣT2λ2a2βa1=2a2Σ2λ2a2βa1=0=2a2Σa1T2λ2a2a1Tβa1a1T=β=0
β = 0 \beta=0 β=0带入 ∂ E ( a 2 ) ∂ a 2 \frac{\partial E\left( a_2 \right)}{\partial a_2} a2E(a2)得到:
Σ a 2 T − λ 2 a 2 T = 0 \varSigma a_{2}^{T}-\lambda _2a_{2}^{T}=0 Σa2Tλ2a2T=0
a 2 T a_2^T a2T Σ \Sigma Σ的特征向量, λ 2 \lambda_2 λ2是对应的特征值

目标函数变为:
v a r ( y 2 ) = a 2 Σ a 2 T = λ 2 a 2 a 2 T = λ 2 var(y_2)=a_2\varSigma a_2^T=\lambda_2 a_2a_2^T=\lambda_2 var(y2)=a2Σa2T=λ2a2a2T=λ2
则当 a 2 a_2 a2 Σ \Sigma Σ第二大的特征值 λ 2 \lambda_2 λ2对应的特征向量时, a 2 a_2 a2是此优化问题的解。

Σ \Sigma Σ最大的特征值 λ 1 \lambda_1 λ1已经分配给 v a r ( y 1 ) var(y_1) var(y1)

我们称 y 2 = a 2 ( X − X ‾ ) y_2=a_2\left( X-\overline{X} \right) y2=a2(XX) X X X的第二主成分, a 2 a_2 a2 Σ \Sigma Σ最大的特征值 λ 2 \lambda_{2} λ2对应的特征向量

按照上述方法可以求得第一、第二、直到第 M M M主成分 y i y_i yi,其系数向量 a 1 T , a 2 T , ⋯   , a M T a_1^T,a_2^T,\cdots ,a_M^T a1T,a2T,,aMT分别是 Σ \Sigma Σ的第一个、第二个、直到第 M M M个单位特征向量, λ 1 , λ 2 , ⋯   , λ M \lambda_1,\lambda_2,\cdots,\lambda_M λ1,λ2,,λM分别是对应的特征值,其值依次递减。并且,第 k k k主成分的方差等于 Σ \Sigma Σ的第 k k k个特征值。



PCA算法总结

PCA算法:

  1. Σ = ∑ i = 1 P ( X i − X ‾ ) ( X i − X ‾ ) T \varSigma =\sum_{i=1}^P{ \left( X_i-\overline{X} \right) \left( X_i-\overline{X} \right) ^T } Σ=i=1P(XiX)(XiX)T

  2. Σ \varSigma Σ的特征值并按从大到小排序 [ λ 1 , λ 2 , ⋯   , λ M ] \left[ \lambda _1,\lambda _2,\cdots ,\lambda _M \right] [λ1,λ2,,λM],对应特征值 [ a 1 T , a 2 T , ⋯   , a M T ] \left[ a_1^T,a_2^T,\cdots ,a_M^T \right] [a1T,a2T,,aMT]

  3. 归一化所有 a i T a_i^T aiT,使 ∥ a i T ∥ = 1 \lVert a_{i}^{T} \rVert =1 aiT=1

  4. A = [ a 1 a 2 ⋮ a M ] A=\left[ \begin{array}{c} a_1\\ a_2\\ \vdots\\ a_M\\ \end{array} \right] A=a1a2aM

  5. Y = A ( X − X ‾ ) Y=A\left( X-\overline{X} \right) Y=A(XX)

SVD(Singular Value Decomposition)算法可以快速求得特征值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值