降維--主成分分析(PCA)

1 引言

主成分分析(Principal Component Analysis, PCA)是一種經典又常用的數據降維算法(注意這裏的降維是指特徵提取 ,有時也稱子空間學習,還有一支叫特徵選擇,有興趣可參這篇博客),它的主要思想是尋找數據分佈方差最大的投影方向,初次聽好像也不太好理解,那就上個圖瞧瞧咯。


圖1
圖1

如圖1標註出了信號和噪音的方差方向。我們找數據變化大的方向,變化大則含信息量大,所以認爲它代表信號方向,而認爲小的數據波動是由噪音引起。事實上,有個叫信噪比的指標:SNR=σsignal2/σnoise2SNR 越大(1 ),說明信息越準確噪音越少。圖中用x,y座標軸來描述這些數據點的位置,如果我們忽略次要因素,抓主要矛盾,就可以用一個沿着信號方向的軸(投影方向),來刻畫這些點,雖然可能會損失一些有用的信息,但是這個過程中我們簡化了問題,實現了降維:從二維到一維。

小結一下降維大法的好處:降維可以去除數據中的冗餘特徵,相應也可減少數據存儲空間,更重要的是,方便後續各種算法對數據的進一步處理、分析!這一小節到這裏本應結束,但我還想再上個酷炫的圖,已超出PCA範疇,可跳過不看。


這裏寫圖片描述
圖2

如圖2A,把一張“彩色的紙”捲起來。如圖2B,在紙上隨機選取一些數據。如圖2C,把紙攤開。不同的顏色代表不同的類別,在現實生活中,數據的呈現形式往往是這個B樣子,不僅需要在更高維的空間中描述它們,而且往往導致數據更難區分(同類數據間的歐式距離甚至比非同類的距離都大),所以最好就是找到簡單又好分的數據本質的分佈空間如C,這種B到C的降維技術就是傳說中的流形學習(manifold learning),典型代表有LLE,LPP,NPE等,在此按住不提,總之流行學習是關注局部結構,而PCA關注的是全局。

2 目標函數及求解

上一節簡要介紹了PCA的思想,提到了PCA就是找方差大的方向,這一節就是解決怎樣來找這些方向。在機器學習模型中,常針對一個要求解的問題,提出若干準則,以此提出一個目標函數,再在數學上對目標函數進行優化,得出問題的解。PCA的準則是,讓投影后的數據分佈方差儘可能大,所以PCA的目標函數可以這樣定義:

(2.1)max1ni=1n(yiy¯)2=maxwTw=11ni=1n(wTxi)2=maxwTw=1wT(1nXXT)w=maxwTw=1wTCxw
其中,wRd 表示投影方向,yi=wTxi 是投影后的數據點,X=[x1,,xn]Rd×n 是數據矩陣,且我們假設它已經被零均值化處理過,即x¯=1nixi=0 ,也自然有y¯=0Cx 就是協方差矩陣,有時也用修正後的,即Cx=1n1XXT 。關於正交約束,可以這樣簡單理解,一個作用是使目標式子有解,限制w 的變化範圍,另一個作用是選擇標準化的座標軸,接下來會再提到。

上面是學了一個投影方向(也稱子空間),即把數據降成一維,如果要學多個投影方向,很自然地,我們可以讓它們的和最大,即:

(2.2)maxj,wjTwj=1j=1cwjTCxwj=maxWTW=IcTr(WTCxW)
這裏,W=[w1,,wc]Rd×c 是投影矩陣,IcRc×c 表示單位矩陣,正交約束使得各投影方向自身是標準化的,且它們之間是兩兩正交的,爲什麼要正交,可簡單類比我們常用x,y軸表示平面上的點,用xyz軸表示三維空間中的點,都是爲了使問題簡化而已。

現在就要來求解上述提出的目標式子,更一般地,我們直接對式(2.2)進行操作。設ΛRc×c 爲拉格朗日乘子,式(2.2)的拉格朗日函數爲:

(2.3)J(W)=Tr(WTCxW)Tr(Λ(WTWIc))
求導並置零得:
(2.4)J(W)W=2CxWW(Λ+ΛT)=0
Λ~=12(Λ+ΛT) ,有CxW=WΛ~ 。所以,W 就是CX 的特徵向量矩陣,Λ~ 是對應的特徵值組成的對角矩陣。J(W)=Tr(WTWΛ~)=Tr(Λ~) ,要最大化J(W) ,自然取Cx 的前c 個最大的特徵值,相應地,W 就是由Cx 的前c 大特徵值對應的特徵向量按列組成的矩陣。通過投影矩陣W ,數據從d 維降低到c 維。

關於主成分個數(c ),通常根據需要保留的方差百分比,即需要保留的信息量來確定。比如我們要保留99%的信息量,將λ 從大到小排列,即λ1>λ2>>λn ,找到最小的k ,使滿足:

j=1kλjj=1nλj0.99

3 再理解

上一節,我們走完了機器學習中傳統的目標引出和公式推導過程,這一節中,我們嘗試從另外幾個角度來剖析PCA,感受一下殊途同歸。

3.1 特徵值分解

前面已經引出了協方差的概念,在概率論和統計學中,協方差用於衡量變量之間的總體誤差,方差是協方差的特例,即兩個變量相同情況下的協方差。在協方差矩陣中,對角線元素對應了各變量自身的方差大小,非對角線元素就是不同變量之間的協方差。如果兩個變量是統計獨立的,那麼兩者之間的協方差就是0。(爲了避免側重點跑偏,關於協方差的具體內容在此不做展開,有興趣可自行谷歌/百度)

所以我們可以直接拿協方差矩陣做文章,簡單分析一下,我們想要的協方差矩陣應該是介個樣紙的:對角線元素儘可能大,非對角線元素儘量爲0,即協方差矩陣最好是一個對角陣。原始數據X ,對應原始協方差矩陣CxCx 通常含有冗餘特徵,即非對角,現在我們想要通過一個投影變換Y=WTX ,使得降維後新數據的協方差矩陣Cy=WTCxW (近似)爲對角陣。注意Cx 實對稱,是一個正規矩陣(滿足ATA=AAT,ARn×n ),根據矩陣論的知識,一定可以對角化:D=PTCxP ,其中PRd×dCx 的特徵向量按列組成,且P 是個正交陣,DRd×d 是對應的特徵值組成的對角矩陣。嘿!這不就是我們想要的對角矩陣嘛,對比Cy=WTCxW ,我們可令WP 的某c 列按列組成,因爲我們想要對角元素儘可能大,這c 列自然是對應Cx 的前c 大特徵值的列(特徵向量),跟上一節中推導的結果一致!

3.2 奇異值分解(SVD)

SVD(singular value decomposition),即奇異值分解,跟上一小節的特徵值分解有很大關聯,我們不妨先來對比一下兩者:

方法 表示 說明
特徵值分解 A=PΛP1 A 是方陣,P 可逆但不需要是正交陣,Λ 不需要是半正定陣(因爲可以有λ<0 )
SVD A=UΣVT A 不需要爲方陣, U,V 是正交陣,Σ 爲半正定陣(因爲奇異值 0)

【注】方陣A 半正定:xRn ,有xTAx0

Y~=1nXT ,則有Y~TY~=1nXXT=Cx 。對Y~ 進行SVD:Y~=UΣVT ,那麼V 就包含了YTY 也即Cx 的特徵向量。SVD這個角度更多地是爲了求解的方便(即已知我們要求解的投影方向就是協方差矩陣的特徵向量),在數值計算上,SVD比特徵值分解要穩定一些,而且對一個n×n 的矩陣進行特徵分解的計算複雜度高達O(n3)

補充:不難發現,對於一個對稱半正定矩陣A (保證了可對角化和特徵值0 ),特徵分解和奇異值分解是等價的,因爲A=PΛPT 既可以看做是特徵分解,也可以看做是U=V 時的奇異值分解,此時A 的特徵值=奇異值。無巧不成書,幸運的我們幸運地發現,Cx 正是這樣一個對稱半正定陣!所以實際上,我們對Cx 進行特徵分解或者SVD都是可以得到投影方向滴

3.3 數據重構

也可從數據重構的角度來看待PCA,主要思想是將投影后的數據重新投影回原空間,使得數據的重構誤差最小,公式化表述就是:

(3.1)minWRd×cXWWTXF2s.t.wiTwj=0(ij),wiTwi=1
首先,如果我們保留100%的信息量,即選擇的主成分個數c 就等於原始維度d ,相當於不降維,Wd×d 大小的正交矩陣,有WWT=Id ,此時重構誤差爲0。下面,我們來證明式(3.1)等價於式(2.2)。
(16)(3.1)minWTW=IcTr(XWWTX)T(XWWTX)(17)maxWTW=IcTr(XTWWTX)(18)maxWTW=Ic1nTr(WTXXTW)(2.2)
【注】上面第一個等價就是按定義展開,第二個是去掉了一些無關的常數項,不影響最大或最小問題的解,第三個用到了跡的性質Tr(AB)=Tr(BA)。

3.4 低秩近似

還有一種觀點,認爲PCA是找一個低秩矩陣來近似數據矩陣,用歐式距離來衡量的話,就是:

(3.2)minrank(Z)=cXZF2.
根據滿秩分解,ZRd×n 可以分解爲:Z=UVT ,其中URd×c,VRn×c ,且有UTU=Ic 。式(2.2)可以改寫爲:
(3.2)minUTU=Ic,VXUVTF2.
這裏,U 可以看做是d 維空間的c 個基,V 可以看做是數據點在該空間中的(低維)表達。下面我們還是來把式(3.2)跟式(2.2)聯繫起來。式(3.2)對V 求偏導並置零,可得V=XTU ,代回(3.2)中可得:
(3.3)maxUTU=IcTr(UTXXTU).
又回到最初的起點啦,即PCA現在跟低秩近似也聯繫起來了。

4 拓展

對本節內容如果有興趣但沒時間仔細看過程,大概瀏覽一下結論就行,這一節主要就是輸出一種認識,學習和生活中,不要輕易小瞧看似簡單的人/物,覺得自己瞭然了看穿了,可能只是因爲自己還在霧中。

4.1 PCA與Kmeans

PCA是經典的降維算法,Kmeans是經典的聚類算法,在這一小節裏,咱們來瞅瞅它們兩個在私底下會不會有什麼基情。Kmeans大意是先隨機給定一些聚類中心,然後依據數據點距聚類中心的遠近給數據分配簇標籤,然後計算新的聚類中心,然後再重新分配,然後再計算,再分配……最終聚類中心會移動到一個比較好的位置,使得數據點距聚類中心的距離的平方和比較小。對,就是根據距離的平方和作爲準則的,所以目標函數自然可以這樣寫:

(4.1)minCkk=1KiCkximk2
這就是我們常見的Kmeans目標式,其中K 表示簇的個數,Ck 表示第k 個簇的數據點集合,mk=iCk1nkxi 表示第k 個簇的聚類中心,nk 表示第k 個簇中的數據點個數。僅通過(4.1)好像看不出什麼名堂,那我們就來變一變,看能不能寫出更簡便的表達式,因爲是要找跟PCA之間的關係,所以聯想PCA的目標式,看能不能跟(2.2)套一下近乎。下面是公式推導:
(28)(4.1)mink=1KiCk(xiTxi2xiTmk+mkTmk)(29)mini=1nxiTxi2k=1KiCkxiTmk+k=1KnkmkTmk(30)mini=1nxiTxik=1KiCkxiTmk(nkmkTmk=iCkxiTmk)(31)mini=1nxiTxik=1K1nki,jCkxiTxj(32)minTr(XTX)Tr(HTXTXH)(33)maxHTH=I,H0Tr(HTKH)(4.2)
其中引入了一個指示(或標籤)矩陣HRn×k ,如果xi 是第j 個簇的,則Hij=1/nk ,否則爲0。比如現在有5個樣例分別屬於兩個簇,前兩個屬於第一個簇,後三個屬於第二個簇,則H 長這個樣紙:
[1/21/2000001/31/31/3]T
K=XTX 是相似度矩陣,這裏是採用的標準內積線性核,也可以擴展到其它核,在此不做贅述。到這裏可以小激動一下,因爲式(4.2)相比式(4.1)不僅看起來簡明多了,而且看上去跟我們目標式(2.2)長得很像,那式(4.2)的解跟式(2.2)的解怎麼聯繫起來呢?還記得上一節中說的特徵值分解和SVD分解吧,我們再把它們拿出來瞧瞧(此處忽略Cx 中的1n ,且不考慮Cx 不可逆的情況):
(34)X=UΣVT(35)Cx=XXT=UΛUT(36)K=XTX=VΛVT
上面URd×c 就是PCA中要求的投影矩陣WV 是式(4.2)鬆弛非負約束後的指示矩陣H 。從第一行中的式子可以知道,V=XTUΣ1 ,這說明了什麼啊,說明PCA實際上是在進行一種鬆弛化的Kmeans聚類,簇的指示矩陣就是投影后的數據矩陣(再縮放一下)

拓展的拓展:1)kernel Kmeans跟譜聚類(spectral clustering)有關係;2)實際上,XXT 也叫總體散度矩陣,XHHTXT 可參見線性判別分析LDA,它是另一種經典的降維算法,PCA是無監督的,LDA是有監督。所以Kmeas實際上在minHTr(Sw) ,這裏Sw=StSb 是類內散度矩陣。3)LDA是已知標籤,調整投影矩陣,Kmeans是調整標籤。

4.2 Robust PCA

關於魯棒PCA這個方向,也有很多研究成果,這裏只簡單地提一種思路,是關於用1 -norm替代2 -norm的,這是一種在機器學習中內十分常用的手法,用於實現魯棒性或稀疏性。涉及到範數,我們先把式(2.2)改寫一下:

(4.1)minWTW=Ic1ni=1nWTxi22
那麼魯棒PCA就是:
(4.1)minWTW=Ic1ni=1nWTxi1
關於求解的問題超出本文範疇,感興趣地可以看相關論文。

主要參考文獻

【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.

發佈了25 篇原創文章 · 獲贊 21 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章