主成分分析 (Principal Component Analysis,PCA) 是一種常用的無監督學習方法,這一方法利用正交變換把由線性相關變量表示的觀測數據轉換為少數幾個由線性無關變量表示的數據,線性無關的變量稱為主成分。
1 PCA 基本想法
主成分分析中,首先對給定數據進行中心化,使得數據每一變量的平均值為 0。之后對數據進行正交變換,原來由線性相關變量表示的數據,通過正交變換成若干個線性無關的新變量表示的數據。新變量是可能的正交變換中變量的方差和 (信息保存) 最大的,方差表示在新變量上信息的大小。
例如,圖中的數據在 u1 方向上的投影明顯比 u2 好,因為數據投影后的方差更大,保存的信息更多。我們可以再找一個與 u1 線性無關且投影后方差最大的向量,即 u2 。因為這里只是二維的,所以最多兩個線性無關的新變量,這兩個新變量依次稱為第一主成分(u1)、第二主成分(u2)。
這就是 PCA 的基本思想。通過 PCA,可以利用主成分近似地表示原始數據,這可理解為發現數據的“基本結構”;也可以把數據由少量主成分表示,這可理解為對數據降維。
對於 PCA 降維的更直觀的解釋:將數據投影到新坐標系的坐標軸上,新坐標系的第一坐標軸、第二坐標軸等分別表示第一主成分、第二主成分等,數據在每一軸上的坐標值的平方表示相應變量的方差 (因為已經中心化過了),並且,這個坐標系是在所有可能的新的坐標系中,坐標軸上的方差和最大的。
2 PCA 的推導
一般來說,PCA 有兩種解釋:第一種解釋是樣本點到這個直線的距離足夠近,即基於最小投影距離;第二種解釋是樣本點在這個直線上的投影能盡可能的分開,即基於最大投影方差。兩種解釋的推導是等價的,下面主要介紹基於最大投影方差的推導。
假設 n 個 d 維數據 X = ( x1,x2 ,...,xn ),都已進行了中心化。經過投影變換后得到的新坐標系為 { w1,w2,...,wd },其中 w 是標准正交基,即 ‖w‖2 = 1,wiTwj = 0。如果我們將數據從 d 維降到 k 維 ( k < d ),那么我們僅保留前 k 個主成分 { w1,w2,...,wk }。
對於任意一個樣本 xi,在新的坐標系中的投影為 WTxi,在新坐標系中的投影方差為 xiTWWTxi,要使所有的樣本的投影方差和最大,也就是最大化 WTXXTW 的跡的和,即:
利用拉格朗日函數可以得到:
對 W 求導有 XXTW + λW = 0,整理下即為:
可以看出, -λ 為 XXT 的最大的 k 個特征值組成的矩陣,特征值在主對角線上,其余位置為 0,而 W 為 XXT 的 k 個特征值對應的特征向量組成的矩陣。最后,對於原始數據集,我們只需要用 WTxi 就可以把原始數據集降到 k 維數據集。
一般,yi 是與 y1,y2,...,yi-1 都不相關的 X 的所有線性變換中方差最大的,即第 i 主成分。
X 的第 i 主成分的方差是:
即協方差矩陣 XXT 的第 k 個特征值。
3 PCA 算法流程
從上面兩節我們可以看出,求樣本 xi 的 k 維的主成分其實就是求樣本集的協方差矩陣 XXT 的前 k 個特征值對應特征向量矩陣 W,然后對於每個樣本 xi 做如下變換 zi = WTxi ,即達到降維 PCA 的目的。
具體的算法流程:
輸入: n 個 d 維數據集 X = ( x1,x2 ,...,xn ),要降到的維數 k 。
輸出:降維后的樣本集 Z
(1) 對所有樣本進行中心化;
(2) 計算樣本的協方差矩陣 XXT ;
(3) 對矩陣 XXT 進行特征值分解;
(4) 取出最大的 k 個特征值對應的特征向量 { w1,w2,...,wk },將所有的特征向量標准化后,組成特征向量矩陣 W ;
(5) 對樣本集中的每一個樣本 xi ,轉化為新的樣本 zi = WTxi ;
(6) 得到輸出樣本集 Z。
有時候,我們不指定降維后的 k 的值,而是換種方式,指定一個降維到的主成分比重閾值 t 。這個閾值 t 在 ( 0,1 ] 之間。假如我們的 n 個特征值為 λ1 ≥ λ2 ≥ ... ≥ λn,則 k 可以通過下式得到:
在一些實際應用中,第 (3) 步的特征值分解往往會用奇異值分解 (SVD) 代替,一些 SVD 的算法可以在不計算 XXT 的情況下,直接計算 XXT 的特征向量,降低了計算復雜度。
4 總結
這里對 PCA 算法做一個總結。作為一個非監督學習的降維方法,它只需要特征值分解,就可以對數據進行壓縮,去噪。因此在實際場景應用很廣泛。為了克服 PCA 的一些缺點,出現了很多 PCA 的變種,比如為解決非線性降維的 KPCA,還有解決內存限制的增量 PCA 方法 Incremental PCA,以及解決稀疏數據降維的 PCA 方法 Sparse PCA 等。
PCA 算法的主要優點有:
1)僅僅需要以方差衡量信息量,不受數據集以外的因素影響。
2)各主成分之間正交,可消除原始數據成分間的相互影響的因素。
3)計算方法簡單,主要運算是特征值分解,易於實現。
PCA 算法的主要缺點有:
1)主成分各個特征維度的含義具有一定的模糊性,不如原始樣本特征的解釋性強。
2)方差小的非主成分也可能含有對樣本差異的重要信息,因降維丟棄可能對后續數據處理有影響。
主要參考:PCA 原理總結、李航《統計學習方法》