PCA降維
——最大方差和最小協方差聯合解釋(線性代數看PCA)
注:根據網上資料整理而得,歡迎討論
機器學習算法的復雜度和數據的維數有着密切關系,甚至與維數呈指數級關聯。因此我們必須對數據進行降維。
降維當然意味着信息的丟失,不過鑒於實際數據本身常常存在的相關性,我們可以想辦法在降維的同時將信息的損失盡量降低。
PCA是一種具有嚴格數學基礎並且已被廣泛采用的降維方法。
協方差矩陣及優化目標
如果我們必須使用一維來表示這些數據,又希望盡量保留原始的信息,你要如何選擇?
通過上一節對基變換的討論我們知道,這個問題實際上是要在二維平面中選擇一個方向,將所有數據都投影到這個方向所在直線上,用投影值表示原始記錄。這是一個實際的二維降到一維的問題。
那么如何選擇這個方向(或者說基)才能盡量保留最多的原始信息呢?一種直觀的看法是:希望投影后的投影值盡可能分散。
方差
上文說到,我們希望投影后投影值盡可能分散,而這種分散程度,可以用數學上的方差來表述。被形式化表述為:尋找一個一維基,使得所有數據變換為這個基上的坐標表示后,方差值最大,(即:投影之后的點比較分散,沒有相關性。以達到一個很好的降維效果)
協方差
當協方差為0時,表示兩個字段完全獨立。為了讓協方差為0,我們選擇第二個基時只能在與第一個基正交的方向上選擇。因此最終選擇的兩個方向一定是正交的。
至此,我們得到了降維問題的優化目標:將一組N維向量降為K維(K大於0,小於N),其目標是選擇K個單位(模為1)正交基,使得原始數據變換到這組基上后,各字段兩兩間協方差為0,而字段的方差則盡可能大(在正交的約束下,取最大的K個方差)。即:投影之后的點比較分散,沒有相關性。以達到一個很好的降維效果)
協方差矩陣
在數學上研究計算方案。
設我們有m個n維數據記錄,將其按列排成n乘m的矩陣X,設C=1/m*XXT,則C是一個對稱矩陣,其對角線分別個各個字段的方差,而第i行j列和j行i列元素相同,表示i和j兩個字段的協方差。
協方差矩陣對角化
根據上述推導,我們發現要達到優化目前,等價於將協方差矩陣對角化:即除對角線外的其它元素化為0,並且在對角線上將元素按大小從上到下排列,這樣我們就達到了優化目的。這樣說可能還不是很明晰,我們進一步看下原矩陣與基變換后矩陣協方差矩陣的關系:
設原始數據矩陣X對應的協方差矩陣為C,而P是一組基按行組成的矩陣,設Y=PX,則Y為X對P做基變換后的數據。設Y的協方差矩陣為D,我們推導一下D與C的關系:
D = 1/m*YYT= 1/m*(PX)(PX)T=1/m*PXXTPT =P(1/m*XXT)PT =PCPT
現在事情很明白了!我們要找的P不是別的,而是能讓原始協方差矩陣對角化的P。換句話說,優化目標變成了尋找一個矩陣P,滿足PCPT是一個對角矩陣,並且對角元素按從大到小依次排列,那么P的前K行就是要尋找的基,用P的前K行組成的矩陣乘以X就使得X從N維降到了K維並滿足上述優化條件。
至此,我們離“發明”PCA還有僅一步之遙!
現在所有焦點都聚焦在了協方差矩陣對角化問題上,有時,我們真應該感謝數學家的先行,因為矩陣對角化在線性代數領域已經屬於被玩爛了的東西,所以這在數學上根本不是問題。
由上文知道,協方差矩陣C是一個是對稱矩陣,在線性代數上,實對稱矩陣有一系列非常好的性質:
1)實對稱矩陣不同特征值對應的特征向量必然正交。
2)設特征向量λ重數為r,則必然存在r個線性無關的特征向量對應於λ,因此可以將這r個特征向量單位正交化。
由上面兩條可知,一個n行n列的實對稱矩陣一定可以找到n個單位正交特征向量,設這n個特征向量為e1,e2,⋯,en,我們將其按列組成矩陣:
E=(e1,e2,⋯en)
則對協方差矩陣C有如下結論:
ETCE=Λ;
其中Λ為對角矩陣,其對角元素為各特征向量對應的特征值(可能有重復)。
到這里,我們發現我們已經找到了需要的矩陣P:P=ET
P是協方差矩陣的特征向量單位化后按行排列出的矩陣,其中每一行都是C的一個特征向量。如果設P按照Λ中特征值的從大到小,將特征向量從上到下排列,則用P的前K行組成的矩陣乘以原始數據矩陣X,就得到了我們需要的降維后的數據矩陣Y。
進一步討論
PCA本質上是將方差最大的方向作為主要特征,並且在各個正交方向上將數據“離相關”,也就是讓它們在不同正交方向上沒有相關性。
因此,PCA也存在一些限制,例如它可以很好的解除線性相關,但是對於高階相關性就沒有辦法了,對於存在高階相關性的數據,可以考慮Kernel PCA,通過Kernel函數將非線性相關轉為線性相關,關於這點就不展開討論了。
另外,PCA假設數據各主特征是分布在正交方向上,如果在非正交方向上存在幾個方差較大的方向,PCA的效果就大打折扣了。
PCA是無監督學習的方式。
