主成分分析是一種特徵抽取手段,通過將樣本從原始空間映射到低維空間實現特徵數量的減少,而低維空間中某一維度實際上是原始空間的一種“雜糅”表示。在之前的博客中提到過參考鏈接,由於PCA涉及的數學手段包括矩陣、特徵值和特徵向量,參考筆記-矩陣與特徵值這一篇,對其有一定理解後再來看PCA算法就比較清晰了。
首先給出PCA算法:
- 對所有樣本進行中心化:
- 計算樣本的協方差矩陣
- 對協方差矩陣 做特徵值分解
- 取最大的k個特徵值所對應的特徵向量
得到投影矩陣 。
首先跳過step1先看step2,看看爲什麼需要計算樣本的協方差矩陣。給出協方差(covariance)定義如下:
是兩個變量偏離各自均值的乘積的期望。當兩個變量變化趨勢相同時,即當 大(小)於 時, 也大(小)於 ,協方差取較大正值;若兩個變量變化趨勢相異甚至相反時,協方差取較大負值。因此協方差可以衡量兩個變量變化趨勢的相似性,即變量相關性。
對於 維隨機變量 ,稱矩陣:
爲 維變量 的協方差矩陣,其中:
對於給定的樣本矩陣 個 維變量),參考關於協方差矩陣的理解最終得到協方差矩陣爲:
此時回到step1,可以看到只是少了 ,而這只是一個尺度伸縮,對PCA算法並無影響。因此在算法最初對樣本進行均值化,是爲了讓算法後面的計算有意義,而不是某種預處理,實是屬於算法的一部分。
那爲什麼需要用協方差矩陣呢?這就涉及到PCA算法的目的:將樣本從原始空間映射到低維空間實現特徵數量的減少。這種映射可以用下圖形象表達:
綠色的軸對應了某種投影(即映射)方向,顯然在direction 1 方向上樣本方差是很大的,比較容易能將其區分開來。我們希望投影后能最大程度地區分樣本,這可以等價爲“最大化投影后的方差”,此時有:
可以看到當我們在單位正交基的限制條件下 ,最大投影后的方差,用拉格朗日乘數法求解,得到等價的最大化目標爲 ,即最大化矩陣 (即上文中的樣本矩陣 )的特徵值,投影向量即爲特徵值對應的特徵向量。
再換一個角度思考,將樣本投影之後,我們希望減少某些維度,從而獲取對樣本的“更簡潔”的表示。而減少維度的準則是:在減小維度之後,能最大程度地還原回到減小之前。好比我們找到了一個新的視角來看這個問題,但是在新視角上我們希望看問題看得更簡單,因爲這種“簡單”我們可能會忽略一些東西,而被忽略的東西對解決問題並不重要。這樣即得到了“最小化重建後的誤差”。此時有:
假如樣本原始空間和投影空間的維數爲 ,我們要在投影之後減少1個維度,計算重建誤差如下:
最終誤差等於即爲 (被去除的是第D個維度),而由上最大化方差的推導結果,這恰好等於特徵值 。也就是說,最小化重建誤差等價於最小化被去除維度對應的特徵值,這和最大化投影方差的結果是等價的。
此時可以解釋PCA算法的step3、step4。對協方差矩陣做特徵分解,得到與原始空間維度相同的投影空間,每個特徵值 對應的特徵向量爲某個投影方向。我們保留較大的 對應的特徵向量,使得投影后方差大,樣本更能區分開;去除較小的 對應的特徵向量,使得投影后重建誤差小。 對應的特徵向量即爲投影向量。
回到所舉示例進行說明:
原始空間和投影空間都爲2維,顯然direction 1上樣本方差更大,而direction 2上樣本方差很小,不易區分。去除direction 2對應的維度,投影空間變爲1維,樣本將落於direction 1對應的直線上。
PCA算法解釋完畢。我們首先跳過step1來分析step2,解釋了協方差和協方差矩陣,協方差矩陣的推導自然就解釋了step1。而後從“最大化投影方差”和“最小化重建誤差”,解釋了爲什麼需要對協方差矩陣進行矩陣分解,並選取較大特徵值對應的特徵向量作爲投影向量。以上主要是公式推導,如果參閱了本文最開始提供鏈接中關於矩陣概念的分析,對PCA的算法原理會理解得更加透徹。簡要描述我從該鏈接中總結的東西:
- 矩陣是一種變換(對原始空間旋轉和縮放的融合)
- 矩陣的特徵向量對應的是該變換的縮放方向(可理解爲旋轉過後的座標軸方向)
- 矩陣的特徵值對應的是不同縮放方向的縮放程度
若將原空間中樣本比作某物體運動下軌跡圖,則PCA相當於找到了物體運動最劇烈的方向。由於協方差矩陣中的元素是各個維度隨機變量的協方差(即樣本空間中各樣本特徵之間的相關性),我們做的實際上是找出了縮放程度最大、最能描述樣本特徵相關性的若干個方向。
雖然PCA算法使用場景有限,但是其背後的思想內涵是很豐富的。十分值得學習理解。
參考鏈接如下:
如何理解矩陣特徵值? - 知乎
主成分分析PCA算法:爲什麼去均值以後的高維矩陣乘以其協方差矩陣的特徵向量矩陣就是“投影”? - 知乎
關於協方差矩陣的理解 - CSDN博客
周志華西瓜書