Welcome To My Blog
復(fù)習(xí)完線性代數(shù)再來(lái)推導(dǎo)下PCA
概述
- 主成分分析(principalcomponent analysis)是一種數(shù)據(jù)分析方法,
出發(fā)點(diǎn):從一組特征中計(jì)算出一組按重要性從大到小排列的新特征,它們是原有特征的線性組合,并且相互之間是不相關(guān)(即不線性相關(guān))的.- 重要性:通過(guò)方差衡量,方差大說(shuō)明數(shù)據(jù)分布很散,含有的信息量大
- 不相關(guān):推導(dǎo)時(shí)用
具體推導(dǎo)
參數(shù)說(shuō)明
記x1,x2...xp是P個(gè)原始特征(也就是某個(gè)樣本的維數(shù)), x=(x1,x2...xp)^t,記ξ1,ξ2...ξp是p個(gè)新特征, ξ=(ξ1,ξ2...ξp)^t
新特征是原始特征的線性組合,ξi =Σαij*xj =αi^t*x 或者 ξ =A^t*x
A=(α1,α2...αp). αi=(αi1,αi2...αip)^t.
αi是新特征ξi線性組合的系數(shù),不妨使||α||=1,即αi^t*αi=1(由具體推導(dǎo)過(guò)程可知,這是結(jié)果的共有部分,所以可以設(shè)為1),
ξi=αit*x的結(jié)果是一個(gè)數(shù),所以對(duì)αit*x進(jìn)行轉(zhuǎn)置不影響結(jié)果)
計(jì)算第一個(gè)新特征ξ1的方差:
Var(ξ1)
= E[ξ1*ξ1^t] -E[ξ1]E[ξ1^t]
= E[α1t*x*xt*α1]-E[α1^t*x ]E[x^t*α1]
= α1^t *{E[x^t*x] -E[x]E[x^t]}α1
= α1^t*Σ*α1
Σ是x的協(xié)方差矩陣,接下來(lái)在αi^t*αi=1的約束條件下求Var的極值,使用拉格朗日乘子法:
f(α1,ν)= α1^t *Σ*α1-ν(α1^t *α1-1)
關(guān)于α1求偏導(dǎo)并使結(jié)果等于零,可得:Σ*α1 = ν*α1 (顯而易見(jiàn),ν是Σ的特征值,α1是Σ對(duì)應(yīng)ν的特征向量)
代回得,Var(ξ1) = ν*α1^t*α1 = ν,說(shuō)明方差的最大值就是x的協(xié)方差矩陣的特征值,取ν為最大的特征值,使新特征ξ1最重要
計(jì)算第二個(gè)新特征ξ2的方差:
Var(ξ2) = α2^t*Σ*α2
保持ξ1與ξ2不相關(guān),即加入約束Cov(ξ1,ξ2)= 0
Cov(ξ1,ξ2)
= E[ξ1*ξ2^t] - E[ξ1]E[ξ2^t]
= α1^t* {E[x^t*x] -E[x]E[x^t] }*α2^t
= α1^t*Σ*α2
為利用第一個(gè)新特征的條件,求Cov(ξ2,ξ1)
Cov(ξ2,ξ1) = Cov(ξ1,ξ2)
= α2^t*Σ*α1
= ν*α2^t*α1 (因?yàn)棣?α1 = ν*α1)
= 0
得 α2^t *α1 = 0,說(shuō)明α1與α2正交,也就是說(shuō),此處不相關(guān)等價(jià)于α1與α2正交
在α2^t *α2=1和α2^t*α1 =0的約束下用拉格朗日乘子法求Var(ξ2)的最大值
f(α2,α1,m,n) = α2^t*Σ*α2 - m(α2^t*α2-1) - n*α2^t*α1
分別對(duì)α2,α1,m,n求偏導(dǎo)并使結(jié)果為0,得n=0, Σ*α2 = m*α2 (顯而易見(jiàn),m是Σ的特征值,α2是Σ對(duì)應(yīng)m的特征向量)
代回得,Var(ξ2) = m
計(jì)算其余新特征ξ的方差
同理,求出ξ3,ξ4...ξp
進(jìn)一步總結(jié)
- 可以發(fā)現(xiàn),每個(gè)新特征ξi的方差都是x協(xié)方差矩陣Σ的特征值,所以有了這個(gè)理論基礎(chǔ)后可以直接求Σ的特征值,并從大到小排序,依次作為ξi方差的最大值
- Σ是實(shí)對(duì)稱矩陣,所以Σ一定正交相似于對(duì)角矩陣,且對(duì)角矩陣的對(duì)角元素就是Σ的特征值,只需找出正交矩陣O,使O^(-1)ΣO=diag(λ1,λ2...λp)即可
- Σ是實(shí)對(duì)稱矩陣,所以Σ對(duì)應(yīng)不同特征值的特征向量都是正交的,求出特征向量再對(duì)特征向量進(jìn)行單位化,各個(gè)特征向量即可組成一個(gè)符合條件的正交矩陣
- 不僅如此,我們發(fā)現(xiàn),計(jì)算過(guò)程中各個(gè)組合系數(shù)αi是正交的,且長(zhǎng)度為1,所以直接用通過(guò)Σ得到的正交矩陣的各個(gè)列向量作為αi即可!所以組合系數(shù)來(lái)的很方便,但要注意對(duì)照特征值進(jìn)行排序
- 這樣一來(lái),新舊特征之間的具體關(guān)系ξ=A^t*x就明確了,實(shí)際中通常把主成分進(jìn)行零均值化,即 ξ = A^t*(x-μ),這樣協(xié)方差矩陣更容易計(jì)算,且不影響主成分的方向
- 每個(gè)ξi都是一個(gè)主成分,全部主成分的方差之和等于x協(xié)方差矩陣特征值的和,即 ΣVar(ξi) = Σλi,也就是x協(xié)方差矩陣的跡(trace)
如何降維?
- 通常希望用較少的主成分ξi來(lái)表示數(shù)據(jù),前k個(gè)主成分的方差和Σλi比上所有主成分的方差和可以得到這k個(gè)主成分所占的比例,根據(jù)實(shí)際需求,比如80%,算出k的個(gè)數(shù)
- 降維:
- 把p維的數(shù)據(jù)減少成k維的數(shù)據(jù)(k<p),也就是用ξ的前k個(gè)維度(ξ1,ξ2...ξk)^t 描述每個(gè)樣本
- 換句話說(shuō),原來(lái)的坐標(biāo)軸是(x1,x2...xp)^t ,降維后的坐標(biāo)軸是(ξ1,ξ2...ξk)^t.
- 給個(gè)具體的例子,p*m維矩陣C,由m個(gè)樣本構(gòu)成,每個(gè)樣本是p維,使用A的前k個(gè)主成分進(jìn)行降維,A^t*C,即可得到降維后的數(shù)據(jù)