主成分分析 PCA
算法概述
相关数学概念:
-
从矩阵空间角度分析PCA方法:
- 对于原始样本来说,其基向量为d个形如(1,0,0,…,0),(0,1,0,…,0),(0,0,0,…,1)的单位正交向量,这些向量张成d维样本空间,样本点的坐标代表着d个基向量的线性组合:
x i = ( x i 1 , x i 2 , . . . , x i , d ) T = x i 1 ( 1 , 0 , 0 , . . . , 0 ) T + . . . + x i d ( 0 , 0 , 0 , . . . , 1 ) T x_i=(x_{i1},x_{i2},...,x_{i,d})^T=x_{i1}(1,0,0,...,0)^T+...+x_{id}(0,0,0,...,1)^T xi=(xi1,xi2,...,xi,d)T=xi1(1,0,0,...,0)T+...+xid(0,0,0,...,1)T
-
PCA方法的目的是找到原始样本空间中的m个正交向量p1,p2,…pm,以这些向量张成一个原空间的一个子空间,降维的方法就是将原空间中的样本点映射到子空间中,具体映射方法如下:
W d ∗ m = [ p 1 , p 2 , . . . , p m ] X = [ x 1 , x 2 , . . . x n ] = [ x 11 x 21 . . . x n 1 x 12 x 22 . . . x n 2 . . . . . . . . . . . . x 1 d x 2 d . . . x n d ] W_{d*m}=[p_1,p_2,...,p_m]\\ X=[x_1,x_2,...x_n]= \left[ \begin{matrix} x_{11} & x_{21} & ... & x_{n1}\\ x_{12} & x_{22} & ... & x_{n2}\\ ... & ... & ... & ...\\ x_{1d} & x_{2d} & ... & x_{nd} \end{matrix} \right] Wd∗m=[p1,p2,...,pm]X=[x1,x2,...xn]=⎣⎢⎢⎡x11x12...x1dx21x22...x2d............xn1xn2...xnd⎦⎥⎥⎤
Y = [ y 1 , y 2 , . . . , y n ] = W T X = [ p 1 T , p 2 T , . . . , p m T ] T [ x 1 , x 2 , . . . , x n ] = [ p 1 T x 1 p 1 T x 2 . . . p 1 T x n p 2 T x 1 p 2 T x 2 . . . p 2 T x n . . . . . . . . . . . . p m T x 1 p m T x 2 . . . p m T x n ] Y=[y_1,y_2,...,y_n]=W^TX=[p_1^T,p_2^T,...,p_m^T]^T[x_1,x_2,...,x_n]\\ \ \ \ \ \ \ \ \ \ \ \ \ = \left[ \begin{matrix} p_1^Tx_1 & p_1^Tx_2 & ... & p_1^Tx_n\\ p_2^Tx_1 & p_2^Tx_2 & ... & p_2^Tx_n\\ ... & ... & ... & ...\\ p_m^Tx_1 & p_m^Tx_2 & ... & p_m^Tx_n\\ \end{matrix} \right] Y=[y1,y2,...,yn]=WTX=[p1T,p2T,...,pmT]T[x1,x2,...,xn] =⎣⎢⎢⎡p1Tx1p2Tx1...pmTx1p1Tx2p2Tx2...pmTx2............p1Txnp2Txn...pmTxn⎦⎥⎥⎤
得到目标矩阵Y,是投影到子空间后在新基上的n个新点坐标集合,每个yi是一个m维向量, -
低维样本向量 y i y_i yi中的m个值只是新基下的坐标值,为了恢复原始的高维坐标,需要将坐标值与对应基向量相乘并求和
因此有重构方法:
X ’ = W W T X = [ p 1 , p 2 , . . . , p m ] d ∗ m [ y 1 , y 2 , . . . , y n ] m ∗ n X’=WW^TX=[p1,p2,...,p_m]_{d*m}[y_1,y_2,...,y_n]_{m*n} X’=WWTX=[p1,p2,...,pm]d∗m[y1,y2,...,yn]m∗n
-
协方差矩阵
-
方差:衡量变量值的分散程度
V a r ( a ) = 1 N ∑ i = 1 N ( a i − μ a ) 2 Var(a)=\frac1N \sum_{i=1}^N(a_i-\mu_a)^2 Var(a)=N1i=1∑N(ai−μa)2 -
协方差:协方差可以表示两个变量的相关性,其公式为:
C o v ( a , b ) = E [ ( a − μ a ) ( b − μ b ) ] = 1 N − 1 ∑ i = 1 N ( a i − μ a ) ( b i − μ b ) Cov(a,b)=E[(a-\mu_a)(b-\mu_b)]=\frac1{N-1}\sum_{i=1}^N(a_i-\mu_a)(b_i-\mu_b) Cov(a,b)=E[(a−μa)(b−μb)]=N−11i=1∑N(ai−μa)(bi−μb)
当预先对属性进行规范化(令均值为0,方差为1)后,有:
C o v ( a , b ) = 1 n − 1 ∑ i = 1 N a i b i ≈ 1 n ∑ i = 1 N a i b i Cov(a,b)=\frac1{n-1}\sum_{i=1}^Na_ib_i\approx\frac1n\sum_{i=1}^Na_ib_i Cov(a,b)=n−11i=1∑Naibi≈n1i=1∑Naibi -
协方差矩阵:
对含有n个d维数据样本的样本矩阵X
X = [ x 11 x 21 . . . x n 1 x 12 x 22 . . . x n 2 . . . . . . . . . x 1 d x 2 d . . . x n 3 ] X=\left[ \begin{matrix} x_{11} & x_{21} & ...& x_{n1}\\ x_{12} & x_{22} & ...& x_{n2}\\ ... & ... & ...& \\ x_{1d} & x_{2d} & ...& x_{n3} \end{matrix} \right] X=⎣⎢⎢⎡x11x12...x1dx21x22...x2d............xn1xn2xn3⎦⎥⎥⎤
其协方差矩阵为
∑ d ∗ d = X X T = [ C o v ( a t t r 1 , a t t r 1 ) C o v ( a t t r 1 , a t t r 2 ) . . . C o v ( a t t r 1 , a t t r d ) C o v ( a t t r 2 , a t t r 1 ) C o v ( a t t r 2 , a t t r 2 ) . . . C o v ( a t t r 2 , a t t r d ) . . . . . . . . . . . . C o v ( a t t r d , a t t r 1 ) C o v ( a t t r d , a t t r 2 ) . . . C o v ( a t t r d , a t t r d ) ] \sum_{d*d}=XX^T=\left[ \begin{matrix} Cov(attr_1,attr_1) & Cov(attr_1,attr_2) & ... & Cov(attr_1,attr_d)\\ Cov(attr_2,attr_1) & Cov(attr_2,attr_2) & ... & Cov(attr_2,attr_d)\\ ... & ... & ... & ...\\ Cov(attr_d,attr_1) & Cov(attr_d,attr_2) & ... & Cov(attr_d,attr_d) \end{matrix} \right] d∗d∑=XXT=⎣⎢⎢⎡Cov(attr1,attr1)Cov(attr2,attr1)...Cov(attrd,attr1)Cov(attr1,attr2)Cov(attr2,attr2)...Cov(attrd,attr2)............Cov(attr1,attrd)Cov(attr2,attrd)...Cov(attrd,attrd)⎦⎥⎥⎤
-
核心思路:
-
最大化方差(最大可分性):
- 直观来讲,PCA方法的目的是在原样本空间中找到m个方向,使原始样本点在这m个方向上的投影尽可能地分散,以此保证原始样本点在投影时不会出现多点投影到一点,进而导致较大信息损失的情况
如上图,投影到方差小的坐标轴方向会出现多对一的映射,原本可分的样本变得不可分,信息损失较大
同时,对于目标维度d>1的情况,为了尽可能表示更多的原始信息,希望各个基向量不存在线性相关性,即基向量相互正交
-
目标维度上方差最大化的思路可以用数学语言表示为:
a r g m a x W = t r ( W T X X T W ) s . t . W T W = I \underset {W}{argmax} = tr(W^TXX^TW)\\ s.t.\ W^TW=I Wargmax=tr(WTXXTW)s.t. WTW=I就目标函数而言,基向量有正交限制,但如果不对基向量的模长进行限制,目标函数无上限,因此该目标函数需要对W进行单位正交限制
-
最小化重构误差:
-
此为PCA的另一种理解方式,即要求在通过 Y = f ( X ) Y=f(X) Y=f(X)降维之后,再通过 X ′ = f − 1 ( Y ) X'=f^{-1}(Y) X′=f−1(Y)恢复到原来的高维度,最小化 X X X与 X ′ X' X′的距离(差距)
-
以线性变换为例,如:对 Y = W T X Y=W^TX Y=WTX,可以通过 X ′ = W W T X X'=WW^TX X′=WWTX进行恢复(重构)
-
最小化重构误差的数学表达:
a r g m i n W ∣ ∣ X − W W T X ∣ ∣ F 2 s . t . W T W = I \underset{W}{argmin}||X-WW^TX||_F^2 \\ s.t.\ W^TW=I Wargmin∣∣X−WWTX∣∣F2s.t. WTW=I
-
-
两种思路的一致性:
- 对于最小化重构误差思路:
∣ ∣ X − W W T X ∣ ∣ F 2 = t r [ ( X − W W T X ) ( X − W W T X ) T ] = t r ( X X T − X X T W W T − W W T X X T + W W T X X T W W T ) = t r ( ∑ ) − t r ( W T X X T W ) − t r ( W T X X T W ) + t r ( W T X X T W ) = t r ( ∑ ) − t r ( W T X X T W ) \begin{aligned} ||X-WW^TX||_F^2 &= tr[(X-WW^TX)(X-WW^TX)^T]\\ &=tr(XX^T-XX^TWW^T-WW^TXX^T+WW^TXX^TWW^T)\\ &=tr(\sum)-tr(W^TXX^TW^)-tr(W^TXX^TW)+tr(W^TXX^TW)\\ &=tr(\sum)-tr(W^TXX^TW) \end{aligned} ∣∣X−WWTX∣∣F2=tr[(X−WWTX)(X−WWTX)T]=tr(XXT−XXTWWT−WWTXXT+WWTXXTWWT)=tr(∑)−tr(WTXXTW)−tr(WTXXTW)+tr(WTXXTW)=tr(∑)−tr(WTXXTW)
由于协方差阵确定,最小化重构误差即为最大化 t r ( W T X X T W ) tr(W^TXX^TW) tr(WTXXTW),即为最大化方差
- 对于最小化重构误差思路:
算法推导
-
矩阵形式目标函数最优化:
以最大化方差为优化目标:
目 标 : a r g m a x W t r ( W T ∑ W ) s . t . W T W = I 对 有 约 束 最 优 化 问 题 , 由 拉 格 朗 日 乘 子 法 , 得 : t r ( W T ∑ W ) − t r ( Λ ( W T W − I ) ) 求 导 并 令 值 为 0 , 得 : 2 ∑ W − 2 W Λ = 0 即 : ∑ W = W Λ 目标:\underset {W}{arg\ max} \ \ tr(W^T\sum W)\ \ \ s.t.\ W^TW=I\\ 对有约束最优化问题,由拉格朗日乘子法,得:\ tr(W^T\sum W)-tr(\Lambda(W^TW-I)) \\ 求导并令值为0,得: \ 2\sum W-2W\Lambda=0 \\ 即:\sum W=W\Lambda \\ 目标:Warg max tr(WT∑W) s.t. WTW=I对有约束最优化问题,由拉格朗日乘子法,得: tr(WT∑W)−tr(Λ(WTW−I))求导并令值为0,得: 2∑W−2WΛ=0即:∑W=WΛ证明一:变换矩阵W中的列向量为协方差矩阵 ∑ \sum ∑的特征向量
W d ∗ m = [ p 1 , p 2 , . . . , p m ] ∑ d ∗ d = X X T = [ C o v ( a 1 , a 1 ) C o v ( a 1 , a 2 ) . . . C o v ( a 1 , a d ) C o v ( a 2 , a 1 ) C o v ( a 2 , a 2 ) . . . C o v ( a 2 , a d ) . . . . . . . . . . . . C o v ( a d , a 1 ) C o v ( a d , a 2 ) . . . C o v ( a d , a d ) ] \underset{d*m}W=[p_1,p_2,...,p_m]\\ \\ \sum_{d*d}=XX^T=\left[ \begin{matrix} Cov(a_1,a_1) & Cov(a_1,a_2) & ... & Cov(a_1,a_d)\\ Cov(a_2,a_1) & Cov(a_2,a_2) & ... & Cov(a_2,a_d)\\ ... & ... & ... & ...\\ Cov(a_d,a_1) & Cov(a_d,a_2) & ... & Cov(a_d,a_d) \end{matrix} \right] d∗mW=[p1,p2,...,pm]d∗d∑=XXT=⎣⎢⎢⎡Cov(a1,a1)Cov(a2,a1)...Cov(ad,a1)Cov(a1,a2)Cov(a2,a2)...Cov(ad,a2)............Cov(a1,ad)Cov(a2,ad)...Cov(ad,ad)⎦⎥⎥⎤
∑ W d ∗ m = [ ∑ p 1 , ∑ p 2 , . . . , ∑ p m ] Λ m ∗ m = [ λ 1 0 . . . 0 0 λ 2 . . . 0 . . . . . . . . . . . . 0 0 . . . λ m ] \underset{d*m}{\sum W}= [\sum p_1,\sum p_2,...,\sum p_m] \underset {m*m}\Lambda=\left[ \begin{matrix} \lambda_1 & 0 & ... & 0 \\ 0 & \lambda_2 & ... & 0\\ ... & ... & ... & ...\\ 0 & 0 & ... & \lambda_m \end{matrix} \right ] d∗m∑W=[∑p1,∑p2,...,∑pm]m∗mΛ=⎣⎢⎢⎡λ10...00λ2...0............00...λm⎦⎥⎥⎤
W Λ d ∗ m = [ λ 1 p 1 , λ 2 p 2 , . . . , λ m p m ] \underset {d*m}{W\Lambda}=[\lambda_1p_1, \lambda_2p_2,...,\lambda_mp_m] d∗mWΛ=[λ1p1,λ2p2,...,λmpm]
由等式可得:
∑
W
=
W
Λ
[
∑
p
1
,
∑
p
2
,
.
.
.
,
∑
p
m
]
=
[
λ
1
p
1
,
λ
2
p
2
,
.
.
.
,
λ
m
p
m
]
\sum W = W\Lambda \\ [\sum p_1,\sum p_2,...,\sum p_m] = [\lambda_1p_1, \lambda_2p_2,...,\lambda_mp_m]
∑W=WΛ[∑p1,∑p2,...,∑pm]=[λ1p1,λ2p2,...,λmpm]
即得到等式组:
{
∑
p
1
=
λ
1
p
1
∑
p
2
=
λ
1
p
2
.
.
.
∑
p
m
=
λ
1
p
m
\left \{ \begin{aligned} \sum p_1&=\lambda_1p_1\\ \sum p_2&=\lambda_1p_2\\ ...\\ \sum p_m&=\lambda_1p_m \end{aligned} \right.
⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧∑p1∑p2...∑pm=λ1p1=λ1p2=λ1pm
同时存在单位正交约束:
{
p
i
p
j
=
0
i
≠
j
p
i
p
j
=
1
i
=
j
\left \{ \begin{aligned} p_ip_j=0 \ \ \ i\neq j\\ p_ip_j=1 \ \ \ i=j \end{aligned} \right.
{pipj=0 i=jpipj=1 i=j
因此可证得, p i p_i pi为协方差矩阵特征向量, x i x_i xi 为特征值。即满足该条件时,该最优化问题取得极值
证明二:当选取的特征向量是对应特征值最大的m个时,方差最大
优化目标:
t
r
(
W
T
∑
W
)
=
t
r
(
W
T
W
Λ
)
=
t
r
(
Λ
)
tr(W^T\sum W)=tr(W^TW\Lambda)=tr(\Lambda)
tr(WT∑W)=tr(WTWΛ)=tr(Λ)
因此最大化方差等价于最大化对角阵
Λ
\Lambda
Λ的迹,即最大化m个特征向量对应的特征值之和
算法流程
1)标准化样本矩阵X,使样本均值为0,方差为1
2)计算协方差矩阵,进行特征值分解,获取<特征值,特征向量>对
3)选取最大m个特征值对应的特征向量 p 1 , . . . p m p_1,...p_m p1,...pm,组成变换矩阵W
4)通过 Y = W T X Y=W^TX Y=WTX的变换,将样从d维降至m维