1 引言
主成分分析 (Principal Component Analysis, PCA)是一種經典又常用的數據降維算法(注意這裏的降維是指特徵提取 ,有時也稱子空間學習 ,還有一支叫特徵選擇 ,有興趣可參這篇博客 ),它的主要思想是尋找數據分佈方差最大的投影方向,初次聽好像也不太好理解,那就上個圖瞧瞧咯。
圖1
如圖1標註出了信號和噪音的方差方向。我們找數據變化大的方向,變化大則含信息量大,所以認爲它代表信號方向,而認爲小的數據波動是由噪音引起。事實上,有個叫信噪比的指標:S N R = σ 2 s i g n a l / σ 2 n o i s e S N R = σ s i g n a l 2 / σ n o i s e 2 ,S N R S N R 越大(≫ 1 ≫ 1 ),說明信息越準確噪音越少。圖中用x,y座標軸來描述這些數據點的位置,如果我們忽略次要因素,抓主要矛盾,就可以用一個沿着信號方向的軸(投影方向),來刻畫這些點,雖然可能會損失一些有用的信息,但是這個過程中我們簡化了問題,實現了降維:從二維到一維。
小結一下降維大法的好處:降維可以去除數據中的冗餘特徵,相應也可減少數據存儲空間,更重要的是,方便後續各種算法對數據的進一步處理、分析 !這一小節到這裏本應結束,但我還想再上個酷炫的圖,已超出PCA範疇,可跳過不看。
圖2
如圖2A,把一張“彩色的紙”捲起來。如圖2B,在紙上隨機選取一些數據。如圖2C,把紙攤開。不同的顏色代表不同的類別,在現實生活中,數據的呈現形式往往是這個B樣子,不僅需要在更高維的空間中描述它們,而且往往導致數據更難區分(同類數據間的歐式距離甚至比非同類的距離都大),所以最好就是找到簡單又好分的數據本質的分佈空間如C,這種B到C的降維技術就是傳說中的流形學習(manifold learning),典型代表有LLE,LPP,NPE等,在此按住不提,總之流行學習是關注局部結構,而PCA關注的是全局。
2 目標函數及求解
上一節簡要介紹了PCA的思想,提到了PCA就是找方差大的方向,這一節就是解決怎樣來找這些方向。在機器學習模型中,常針對一個要求解的問題,提出若干準則,以此提出一個目標函數,再在數學上對目標函數進行優化,得出問題的解。PCA的準則是,讓投影后的數據分佈方差儘可能大,所以PCA的目標函數可以這樣定義:
max 1 n ∑ i = 1 n ( y i − y ¯ ¯ ¯ ) 2 = max w T w = 1 1 n ∑ i = 1 n ( w T x i ) 2 = max w T w = 1 w T ( 1 n X X T ) w = max w T w = 1 w T C x w (2.1) (2.1) max 1 n ∑ i = 1 n ( y i − y ¯ ) 2 = max w T w = 1 1 n ∑ i = 1 n ( w T x i ) 2 = max w T w = 1 w T ( 1 n X X T ) w = max w T w = 1 w T C x w
其中,
w ∈ R d w ∈ R d 表示投影方向,
y i = w T x i y i = w T x i 是投影后的數據點,
X = [ x 1 , … , x n ] ∈ R d × n X = [ x 1 , … , x n ] ∈ R d × n 是數據矩陣,且我們假設它已經被零均值化處理過,即
x ¯ ¯ ¯ = 1 n ∑ i x i = 0 x ¯ = 1 n ∑ i x i = 0 ,也自然有
y ¯ ¯ ¯ = 0 y ¯ = 0 。
C x C x 就是協方差矩陣,有時也用修正後的,即
C x = 1 n − 1 X X T C x = 1 n − 1 X X T 。關於正交約束,可以這樣簡單理解,一個作用是使目標式子有解,限制
w w 的變化範圍,另一個作用是選擇標準化的座標軸,接下來會再提到。
上面是學了一個投影方向(也稱子空間),即把數據降成一維,如果要學多個投影方向,很自然地,我們可以讓它們的和最大,即:
max ∀ j , w T j w j = 1 ∑ j = 1 c w T j C x w j = max W T W = I c T r ( W T C x W ) (2.2) (2.2) max ∀ j , w j T w j = 1 ∑ j = 1 c w j T C x w j = max W T W = I c T r ( W T C x W )
這裏,
W = [ w 1 , … , w c ] ∈ R d × c W = [ w 1 , … , w c ] ∈ R d × c 是投影矩陣,
I c ∈ R c × c I c ∈ R c × c 表示單位矩陣,正交約束使得各投影方向自身是標準化的,且它們之間是兩兩正交的,爲什麼要正交,可簡單類比我們常用x,y軸表示平面上的點,用xyz軸表示三維空間中的點,都是爲了使問題簡化而已。
現在就要來求解上述提出的目標式子,更一般地,我們直接對式(2.2)進行操作。設Λ ∈ R c × c Λ ∈ R c × c 爲拉格朗日乘子,式(2.2)的拉格朗日函數爲:
J ( W ) = T r ( W T C x W ) − T r ( Λ ( W T W − I c ) ) (2.3) (2.3) J ( W ) = T r ( W T C x W ) − T r ( Λ ( W T W − I c ) )
求導並置零得:
∂ J ( W ) ∂ W = 2 C x W − W ( Λ + Λ T ) = 0 (2.4) (2.4) ∂ J ( W ) ∂ W = 2 C x W − W ( Λ + Λ T ) = 0
記
Λ ~ = 1 2 ( Λ + Λ T ) Λ ~ = 1 2 ( Λ + Λ T ) ,有
C x W = W Λ ~ C x W = W Λ ~ 。所以,
W W 就是
C X C X 的特徵向量矩陣,
Λ ~ Λ ~ 是對應的特徵值組成的對角矩陣。
J ( W ) = T r ( W T W Λ ~ ) = T r ( Λ ~ ) J ( W ) = T r ( W T W Λ ~ ) = T r ( Λ ~ ) ,要最大化
J ( W ) J ( W ) ,自然取
C x C x 的前
c c 個最大的特徵值,相應地,
W W 就是由C x C x 的前c c 大特徵值對應的特徵向量按列組成的矩陣。通過投影矩陣
W W ,數據從
d d 維降低到
c c 維。
關於主成分個數(c c ),通常根據需要保留的方差百分比,即需要保留的信息量來確定。比如我們要保留99%的信息量,將λ λ 從大到小排列,即λ 1 > λ 2 > … > λ n λ 1 > λ 2 > … > λ n ,找到最小的k k ,使滿足:
∑ k j = 1 λ j ∑ n j = 1 λ j ≥ 0.99 ∑ j = 1 k λ j ∑ j = 1 n λ j ≥ 0.99
3 再理解
上一節,我們走完了機器學習中傳統的目標引出和公式推導過程,這一節中,我們嘗試從另外幾個角度來剖析PCA,感受一下殊途同歸。
3.1 特徵值分解
前面已經引出了協方差的概念,在概率論和統計學中,協方差用於衡量變量之間的總體誤差,方差是協方差的特例,即兩個變量相同情況下的協方差。在協方差矩陣中,對角線元素對應了各變量自身的方差大小,非對角線元素就是不同變量之間的協方差。如果兩個變量是統計獨立的,那麼兩者之間的協方差就是0。(爲了避免側重點跑偏,關於協方差的具體內容在此不做展開,有興趣可自行谷歌/百度)
所以我們可以直接拿協方差矩陣做文章,簡單分析一下,我們想要的協方差矩陣應該是介個樣紙的:對角線元素儘可能大,非對角線元素儘量爲0,即協方差矩陣最好是一個對角陣 。原始數據X X ,對應原始協方差矩陣C x C x ,C x C x 通常含有冗餘特徵,即非對角,現在我們想要通過一個投影變換Y = W T X Y = W T X ,使得降維後新數據的協方差矩陣C y = W T C x W C y = W T C x W (近似)爲對角陣。注意C x C x 實對稱,是一個正規矩陣(滿足A T A = A A T , A ∈ R n × n A T A = A A T , A ∈ R n × n ),根據矩陣論的知識,一定可以對角化:D = P T C x P D = P T C x P ,其中P ∈ R d × d P ∈ R d × d 由C x C x 的特徵向量按列組成,且P P 是個正交陣,D ∈ R d × d D ∈ R d × d 是對應的特徵值組成的對角矩陣。嘿!這不就是我們想要的對角矩陣嘛,對比C y = W T C x W C y = W T C x W ,我們可令W W 由P P 的某c c 列按列組成,因爲我們想要對角元素儘可能大,這c c 列自然是對應C x C x 的前c c 大特徵值的列(特徵向量),跟上一節中推導的結果一致!
3.2 奇異值分解(SVD)
SVD(singular value decomposition),即奇異值分解,跟上一小節的特徵值分解有很大關聯,我們不妨先來對比一下兩者:
方法
表示
說明
特徵值分解
A = P Λ P − 1 A = P Λ P − 1
A A 是方陣,P P 可逆但不需要是正交陣,Λ Λ 不需要是半正定陣(因爲可以有λ < 0 λ < 0 )
SVD
A = U Σ V T A = U Σ V T
A A 不需要爲方陣, U , V U , V 是正交陣,Σ Σ 爲半正定陣(因爲奇異值≥ ≥ 0)
【注】方陣A A 半正定:∀ x ∈ R n ∀ x ∈ R n ,有x T A x ≥ 0 x T A x ≥ 0
令Y ~ = 1 n √ X T Y ~ = 1 n X T ,則有Y ~ T Y ~ = 1 n X X T = C x Y ~ T Y ~ = 1 n X X T = C x 。對Y ~ Y ~ 進行SVD:Y ~ = U Σ V T Y ~ = U Σ V T ,那麼V V 就包含了Y T Y Y T Y 也即C x C x 的特徵向量。SVD這個角度更多地是爲了求解的方便(即已知我們要求解的投影方向就是協方差矩陣的特徵向量),在數值計算上,SVD比特徵值分解要穩定一些,而且對一個n × n n × n 的矩陣進行特徵分解的計算複雜度高達O ( n 3 ) O ( n 3 ) 。
補充:不難發現,對於一個對稱半正定矩陣A A (保證了可對角化和特徵值≥ 0 ≥ 0 ),特徵分解和奇異值分解是等價的,因爲A = P Λ P T A = P Λ P T 既可以看做是特徵分解,也可以看做是U = V U = V 時的奇異值分解,此時A A 的特徵值=奇異值。無巧不成書,幸運的我們幸運地發現,C x C x 正是這樣一個對稱半正定陣!所以實際上,我們對C x C x 進行特徵分解或者SVD都是可以得到投影方向滴 。
3.3 數據重構
也可從數據重構的角度來看待PCA,主要思想是將投影后的數據重新投影回原空間,使得數據的重構誤差最小,公式化表述就是:
min W ∈ R d × c ∥ X − W W T X ∥ 2 F s . t . w T i w j = 0 ( i ≠ j ) , w T i w i = 1 (3.1) (3.1) min W ∈ R d × c ‖ X − W W T X ‖ F 2 s . t . w i T w j = 0 ( i ≠ j ) , w i T w i = 1
首先,如果我們保留100%的信息量,即選擇的主成分個數
c c 就等於原始維度
d d ,相當於不降維,
W W 是
d × d d × d 大小的正交矩陣,有
W W T = I d W W T = I d ,此時重構誤差爲0。下面,我們來證明式(3.1)等價於式(2.2)。
( 3.1 ) ⇔ min W T W = I c T r ( X − W W T X ) T ( X − W W T X ) ⇔ max W T W = I c T r ( X T W W T X ) ⇔ max W T W = I c 1 n T r ( W T X X T W ) ⇔ ( 2.2 ) (16) (17) (18) (16) ( 3.1 ) ⇔ min W T W = I c T r ( X − W W T X ) T ( X − W W T X ) (17) ⇔ max W T W = I c T r ( X T W W T X ) (18) ⇔ max W T W = I c 1 n T r ( W T X X T W ) ⇔ ( 2.2 )
【注】上面第一個等價就是按定義展開,第二個是去掉了一些無關的常數項,不影響最大或最小問題的解,第三個用到了跡的性質Tr(AB)=Tr(BA)。
3.4 低秩近似
還有一種觀點,認爲PCA是找一個低秩矩陣來近似數據矩陣,用歐式距離來衡量的話,就是:
min r a n k ( Z ) = c ∥ X − Z ∥ 2 F . (3.2) (3.2) min r a n k ( Z ) = c ‖ X − Z ‖ F 2 .
根據滿秩分解,
Z ∈ R d × n Z ∈ R d × n 可以分解爲:
Z = U V T Z = U V T ,其中
U ∈ R d × c , V ∈ R n × c U ∈ R d × c , V ∈ R n × c ,且有
U T U = I c U T U = I c 。式(2.2)可以改寫爲:
min U T U = I c , V ∥ X − U V T ∥ 2 F . (3.2) (3.2) min U T U = I c , V ‖ X − U V T ‖ F 2 .
這裏,
U U 可以看做是
d d 維空間的
c c 個基,
V V 可以看做是數據點在該空間中的(低維)表達。下面我們還是來把式(3.2)跟式(2.2)聯繫起來。式(3.2)對
V V 求偏導並置零,可得
V = X T U V = X T U ,代回(3.2)中可得:
max U T U = I c T r ( U T X X T U ) . (3.3) (3.3) max U T U = I c T r ( U T X X T U ) .
又回到最初的起點啦,即PCA現在跟低秩近似也聯繫起來了。
4 拓展
對本節內容如果有興趣但沒時間仔細看過程,大概瀏覽一下結論就行,這一節主要就是輸出一種認識,學習和生活中,不要輕易小瞧看似簡單的人/物,覺得自己瞭然了看穿了,可能只是因爲自己還在霧中。
4.1 PCA與Kmeans
PCA是經典的降維算法,Kmeans是經典的聚類算法,在這一小節裏,咱們來瞅瞅它們兩個在私底下會不會有什麼基情。Kmeans大意是先隨機給定一些聚類中心,然後依據數據點距聚類中心的遠近給數據分配簇標籤,然後計算新的聚類中心,然後再重新分配,然後再計算,再分配……最終聚類中心會移動到一個比較好的位置,使得數據點距聚類中心的距離的平方和比較小。對,就是根據距離的平方和作爲準則的,所以目標函數自然可以這樣寫:
min C k ∑ k = 1 K ∑ i ∈ C k ∥ x i − m k ∥ 2 (4.1) (4.1) min C k ∑ k = 1 K ∑ i ∈ C k ‖ x i − m k ‖ 2
這就是我們常見的Kmeans目標式,其中
K K 表示簇的個數,
C k C k 表示第
k k 個簇的數據點集合,
m k = ∑ i ∈ C k 1 n k x i m k = ∑ i ∈ C k 1 n k x i 表示第
k k 個簇的聚類中心,
n k n k 表示第
k k 個簇中的數據點個數。僅通過(4.1)好像看不出什麼名堂,那我們就來變一變,看能不能寫出更簡便的表達式,因爲是要找跟PCA之間的關係,所以聯想PCA的目標式,看能不能跟(2.2)套一下近乎。下面是公式推導:
( 4.1 ) ⇔ min ∑ k = 1 K ∑ i ∈ C k ( x T i x i − 2 x T i m k + m T k m k ) ⇔ min ∑ i = 1 n x T i x i − 2 ∑ k = 1 K ∑ i ∈ C k x T i m k + ∑ k = 1 K n k m T k m k ⇔ min ∑ i = 1 n x T i x i − ∑ k = 1 K ∑ i ∈ C k x T i m k ( ∵ n k m T k m k = ∑ i ∈ C k x T i m k ) ⇔ min ∑ i = 1 n x T i x i − ∑ k = 1 K 1 n k ∑ i , j ∈ C k x T i x j ⇔ min T r ( X T X ) − T r ( H T X T X H ) ⇔ max H T H = I , H ≥ 0 T r ( H T K H ) ( 4.2 ) (28) (29) (30) (31) (32) (33) (28) ( 4.1 ) ⇔ min ∑ k = 1 K ∑ i ∈ C k ( x i T x i − 2 x i T m k + m k T m k ) (29) ⇔ min ∑ i = 1 n x i T x i − 2 ∑ k = 1 K ∑ i ∈ C k x i T m k + ∑ k = 1 K n k m k T m k (30) ⇔ min ∑ i = 1 n x i T x i − ∑ k = 1 K ∑ i ∈ C k x i T m k ( ∵ n k m k T m k = ∑ i ∈ C k x i T m k ) (31) ⇔ min ∑ i = 1 n x i T x i − ∑ k = 1 K 1 n k ∑ i , j ∈ C k x i T x j (32) ⇔ min T r ( X T X ) − T r ( H T X T X H ) (33) ⇔ max H T H = I , H ≥ 0 T r ( H T K H ) ( 4.2 )
其中引入了一個指示(或標籤)矩陣
H ∈ R n × k H ∈ R n × k ,如果
x i x i 是第
j j 個簇的,則
H i j = 1 / n k − − √ H i j = 1 / n k ,否則爲0。比如現在有5個樣例分別屬於兩個簇,前兩個屬於第一個簇,後三個屬於第二個簇,則
H H 長這個樣紙:
[ 1 / 2 – √ 0 1 / 2 – √ 0 0 1 / 3 – √ 0 1 / 3 – √ 0 1 / 3 – √ ] T [ 1 / 2 1 / 2 0 0 0 0 0 1 / 3 1 / 3 1 / 3 ] T
K = X T X K = X T X 是相似度矩陣,這裏是採用的標準內積線性核,也可以擴展到其它核,在此不做贅述。到這裏可以小激動一下,因爲式(4.2)相比式(4.1)不僅看起來簡明多了,而且看上去跟我們目標式(2.2)長得很像,那式(4.2)的解跟式(2.2)的解怎麼聯繫起來呢?還記得上一節中說的特徵值分解和SVD分解吧,我們再把它們拿出來瞧瞧(此處忽略
C x C x 中的
1 n 1 n ,且不考慮
C x C x 不可逆的情況):
X = U Σ V T C x = X X T = U Λ U T K = X T X = V Λ V T (34) (35) (36) (34) X = U Σ V T (35) C x = X X T = U Λ U T (36) K = X T X = V Λ V T
上面
U ∈ R d × c U ∈ R d × c 就是PCA中要求的投影矩陣
W W ,
V V 是式(4.2)鬆弛非負約束後的指示矩陣
H H 。從第一行中的式子可以知道,
V = X T U Σ − 1 V = X T U Σ − 1 ,這說明了什麼啊,說明
PCA實際上是在進行一種鬆弛化的Kmeans聚類,簇的指示矩陣就是投影后的數據矩陣(再縮放一下) 。
拓展的拓展:1)kernel Kmeans跟譜聚類(spectral clustering)有關係;2)實際上,X X T X X T 也叫總體散度矩陣,X H H T X T 是 類 間 散 度 矩 陣 , X H H T X T 是 類 間 散 度 矩 陣 , 可參見線性判別分析LDA,它是另一種經典的降維算法,PCA是無監督的,LDA是有監督。所以Kmeas實際上在min H T r ( S w ) min H T r ( S w ) ,這裏S w = S t − S b S w = S t − S b 是類內散度矩陣。3)LDA是已知標籤,調整投影矩陣,Kmeans是調整標籤。
4.2 Robust PCA
關於魯棒PCA這個方向,也有很多研究成果,這裏只簡單地提一種思路,是關於用ℓ 1 ℓ 1 -norm替代ℓ 2 ℓ 2 -norm的,這是一種在機器學習中內十分常用的手法,用於實現魯棒性或稀疏性。涉及到範數,我們先把式(2.2)改寫一下:
min W T W = I c 1 n ∑ i = 1 n ∥ W T x i ∥ 2 2 (4.1) (4.1) min W T W = I c 1 n ∑ i = 1 n ‖ W T x i ‖ 2 2
那麼魯棒PCA就是:
min W T W = I c 1 n ∑ i = 1 n ∥ W T x i ∥ 1 (4.1) (4.1) min W T W = I c 1 n ∑ i = 1 n ‖ W T x i ‖ 1
關於求解的問題超出本文範疇,感興趣地可以看相關論文。
主要參考文獻
【1】Shlens J. A Tutorial on Principal Component Analysis[J]. 2014, 51(3):219-226.
【2】http://ufldl.stanford.edu/tutorial/unsupervised/PCAWhitening/
【3】Ding C H Q, He X. Principal Component Analysis and Effective K-Means Clustering[C]. SIAM ICDM. DBLP, 2004:126–143.
【4】Masaeli M, Yan Y, Cui Y, et al. Convex Principal Feature Selection[C]. SIAM ICDM. DBLP, 2010:619-628.
【5】Nie F, Yuan J, Huang H. Optimal mean robust principal component analysis[C]. ICML. 2014:1062-1070.
【6】Nie F, Huang H, Ding C, et al. Robust Principal Component Analysis with Non-Greedy L1-Norm Maximization[C]. IJCAI. 2011:1433-1438.