Loading [MathJax]/jax/output/CommonHTML/jax.js

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

序言:當我們需要將 n 個 m 維 data 投影到 k 維中時 (n>k ,即為降維投影)
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=1nni=1(tTxitTˉX)(tTxitTˉ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=1nni=1tT(xiˉX)(xiˉX)Tt
=tT1nni=1(xiˉX)(xiˉX)Tt

1nni=1(xiˉX)(xiˉX)T 可以計算得知,可設為 S,上式等於tTSt

Use Lagrange function: (可參考文章 Lagrange Multiplier)
L=tTStλ(tTt1)
求極值:Lt=0 
2St2λ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,...,uk1
則現在只是要找 tk 使投影到該向量上的 data 變異數為最大

Use Lagrange function:
L=tkTStkk1j=1λj(ujTtk0)λk(tTktk1)
求極值:Ltk=0 
Stkk1j=1λjujλktk=0

然後我們證明 λj=0 for j = 1, ..., k-1
for i = 1, ..., k-1 ,上式等號兩邊同乘 uiT
uiTStkk1j=1λjuiTujλkuiTtk=0
apply Eigen Decomposition to S: S=UDUT (可參考文章 Eigen Decomposition)
uiTUDUTtkλi=0
[0,0,...,1index=i,0,0,...0]D[00index=k1>iXX]=0=λi

λj=0 for j = 1, ..., k-1 =>
Stkλktk=0
又知 tk 需垂直於u1,u2,...,uk1 => tkλ1,λ2,...,λk1

故選uk作為投影用向量 


3. 為什麼 2. 中的假設成立?


在我參考其他地方的推導時,他們都直接把這裡當已知。不過個人覺得,這個假設的正確性不太直覺。
↑以三維投影到二維為例:data 投影在 "以假設求出的兩個向量"後,變異數分別是 4, 2,如何保證三維空間中不會有兩個互相垂直的向量,data 投影在其中的變異數總和會比前者還高?

所以想要嘗試證明一下此假設,不過花超久時間的。思考了一個晚上後,結果還發現另一個不用 Lagrange multiplier 就能推導 PCA 的方法,順便證明該假設成立。(下集待續)

... 那是不是用 Lagrange multiplier 去證會有 bug 阿?
  

沒有留言:

張貼留言