PCA 可以幫我們找到 k 個互相垂直且長度為 1 的向量
使得投影到那些向量後的 data 有最大的變異數 (可以保留最多原本的 data 特性)
而此降維的投影動作可以幫助我們做特徵擷取 (feature extracting)
1. 當投影到一維的時候
將 n 個 m 維 data 投影到某一向量中,使 n 個 data 間的變異數最大
另變異數為 J,data 為 X=[x1,x2,...,xn] (shape of X = (m,n))
J=1nn∑i=1(tTxi−tTˉX)(tTxi−tTˉX)T
t is an unknown project vector (we can set ‖t‖ to be 1 so that tTxi can be projected vector of xi);
tTxi means one projected datum, and tTˉX means the projected sample mean.
整理上式
J=1nn∑i=1tT(xi−ˉX)(xi−ˉX)Tt
=tT1nn∑i=1(xi−ˉX)(xi−ˉX)Tt
1n∑ni=1(xi−ˉX)(xi−ˉX)T 可以計算得知,可設為 S,上式等於tTSt
Use Lagrange function: (可參考文章 Lagrange Multiplier)
L=tTSt−λ(tTt−1)
求極值:∂L∂t=0
2St−2λt=0,St=λt
故 t 的必要條件:須為 S 之eigen-vector
而變異數tTSt在上述條件下可寫為 tTλt=λ,即為 S 之 eigenvalue
(S 的 eigenvalue 皆為非負實數:可參考文章 Singular Value Decomposition 中的 6.)
又知 S 之 eigenvalue λ′1≥λ′2≥… 符合 Sui=λ′iui
故選 λ′1 作為 J 的最大值,而u1作為投影用向量
2. 當投影到 k 維的時候
將 n 個 m 維 data 投影到某 k 個互相垂直且長度為 1 的向量中,使 n 個 data 間的變異數最大
假設:其中 k-1 個投影用向量會是 u1,u2,...,uk−1
則現在只是要找 tk 使投影到該向量上的 data 變異數為最大
Use Lagrange function:
L=tkTStk−k−1∑j=1λj(ujTtk−0)−λk(tTktk−1)
求極值:∂L∂tk=0
Stk−k−1∑j=1λjuj−λktk=0
然後我們證明 λj=0 for j = 1, ..., k-1
for i = 1, ..., k-1 ,上式等號兩邊同乘 uiT
uiTStk−k−1∑j=1λjuiTuj−λkuiTtk=0
apply Eigen Decomposition to S: S=UDUT (可參考文章 Eigen Decomposition)
uiTUDUTtk−λi=0
[0,0,...,1index=i,0,0,...0]D[0⋮0index=k−1>iX⋮X]=0=λi
λj=0 for j = 1, ..., k-1 =>
Stk−λktk=0
又知 tk 需垂直於u1,u2,...,uk−1 => tk≠λ′1,λ2,′...,λ′k−1
故選uk作為投影用向量
3. 為什麼 2. 中的假設成立?
在我參考其他地方的推導時,他們都直接把這裡當已知。不過個人覺得,這個假設的正確性不太直覺。
↑以三維投影到二維為例:data 投影在 "以假設求出的兩個向量"後,變異數分別是 4, 2,如何保證三維空間中不會有兩個互相垂直的向量,data 投影在其中的變異數總和會比前者還高?
所以想要嘗試證明一下此假設,不過花超久時間的。思考了一個晚上後,結果還發現另一個不用 Lagrange multiplier 就能推導 PCA 的方法,順便證明該假設成立。(下集待續)
... 那是不是用 Lagrange multiplier 去證會有 bug 阿?
沒有留言:
張貼留言