Loading [MathJax]/jax/output/CommonHTML/fonts/TeX/fontdata.js

主成分分析 Principal Component Analysis (PCA) 推導、證明 (without Lagrange multiplier)

序言:將 n 個 m 維 data X=[x1,x2,...,xn] (shape of X = (m,n))
投影到某 k 維空間中,

S=1nni=1(xiˉX)(xiˉX)T ,S 之 eigenvalue λ1λ2 符合 Sui=λiui,令[u1,u2,...,um]=U

則如果該 k 維空間為 span{u1,u2,...,uk} ,則投影後的 data 有最大的變異數


1. 首先證明:假設投影到相同的空間中,投影後的 data 變異數就會相同(其實蠻直觀的)

↑雖然投影在不同座標軸,但只要是投影在同空間,投影後的 data 變異數就會相同

完整一點的敘述如下:
假設投影 data 到 k 個向量中,該 k 個向量為A=[a1,a2,...,ak],(a1,a2,...,ak 長度皆為 1 且互相垂直),且投影到該 k 個向量後的 data 變異數為 V
而此時有另一組向量B=[b1,b2,...,bk]b1,b2,...,bk 長度皆為 1 且互相垂直,且span{A}=span{B},則投影到該 k 個向量後的 data 變異數也是 V

sol: 
for x=1, 2, ..., k, data 在ax的投影,所貢獻的變異數為axTSax=axTUDUTax=αx12λ1+αx22λ2+...+αxm2λm
上式中αx1,αx2,...,αxm 皆為純量,且ax=αx1u1+αx2u2+...+αxmum
投影到a1,a2,...,ak後 data 的整體變異數為a1,a2,...,ak所貢獻的變異數總和
V= α112λ1+α122λ2+...+α1m2λm+ α212λ1+α222λ2+...+α2m2λm+ αk12λ1+αk22λ2+...+αkm2λm
同理,投影到b1,b2,...,bk後 data 的整體變異數為
V2= β112λ1+β122λ2+...+β1m2λm+ β212λ1+β222λ2+...+β2m2λm+ βk12λ1+βk22λ2+...+βkm2λm其中bx=βx1u1+βx2u2+...+βxmumx=1,...,k

投影到 A 的部分,觀察有λ1的部分,其總和為(α112+α212+...+αk12)λ1
(α112+α212+...+αk12)u1投影到該空間的向量長度
(u1xxTx=(α11a1+α21a2+...+αk1ak)T(α11a1+α21a2+...+αk1ak))
因 x 同時等於β11b1+β21b2+...+βk1bkα112+α212+...+αk12=β112+β212+...+βk12
其他λ2,λ3,...的部分可以以此類推,最後可得V2=V


2. 接著證明以下敘述:


將 data 投影到某 k 維空間中,
則如果該 k 維空間為 span{u1,u2,...,uk} ,則投影後的 data 有最大的變異數

sol:
使用反證法:假設存在 k 個長度為 1 且互相垂直的向量  C=[c1,c2,...,ck],data 投影到 C 的變異數為 V' > V。

接著我們觀察 C ,對其中任一個向量 cx,其可寫為:cx=γx1u1+γx2u2+...+γxmumγx1,γx2,...,γxm 皆為純量。
我們將 k 個向量的係數以矩陣記錄下來:
C=(γ1,1γ1,2γ1,mγ2,1γ2,2γ2,mγk,1γk,2γk,m)

更新 C' 的算法:

0. 令 i = m, j = k

1. 對於第 i 個 column ,可以看有沒有非 0 值,有的話想辦法消掉:
假設有 γx,m0,則將 row x 與 row j 交換
C=(γ1,1γ1,2γ1,iγ2,1γ2,2γ2,iγj,1γj,2γj,i0)
對於其他的非 0 值,假設有 γx,i0,可以令κ=γxi,iγj,i,assign cx := 11+κ2(cx+κcj) ,和 assign cj := 11+κ2(κcx+cj)
使得 γxi,i=0,且每個 row 長度維持為 1、列空間維持不變 ( data 投影在 CUT之列空間 的變異數維持不變)
對於其他的非 0 值可以比照辦理,最後矩陣可改寫成:
C=(γ1,1γ1,20γ2,1γ2,20γj1,1γj1,20γj,1γj,2γj,i0)

2.  假設 γj,1,γj,2,,γj,i1 不全為 0
則可以令 κ=11γj,i2 ,assign cj := [κγj,1,κγj,2,,κγj,i1,0]
使 cj 長度維持為 1 ((κ21)γj,12+(κ21)γj,22++(κ21)γj,i12=γj,i2)
、每個 row 之間仍互相垂直、且新 cjUT 所貢獻的變異數 原本 cjUT 所貢獻的變異數
((κ21)γj,12λ1+(κ21)γj,22λ2++(κ21)γj,i12λi1
(κ21)γj,12λi+(κ21)γj,22λi++(κ21)γj,i12λi=γj,i2λi)

也有可能 γj,1,γj,2,,γj,i1 全為 0,如此γj,i 則為 1。

3. 如果 column i 不全為 0 ,更新 ( i, j ) := ( i-1, j ),否則更新 ( i, j ) := ( i-1, j-1)
更新完後回到步驟 1.

做完算法後的矩陣會變為:
C=(XXXindex=c10000001index=c2>c10000001index=c3>c20000001index=ck>ck1000)

=> Data 投影在 CUT之列空間 的變異數 V>V
但其 data 投影在 (I|0)UT之列空間 的變異數。
(I|0)UT 則為 [u1,u2,...,uk]T
矛盾

故得證。

沒有留言:

張貼留言