主成分分析(PCA)是壹種數據降維和去除相關性的方法,它通過線性變換將向量投影到低維空間。對向量進行投影就是對向量左乘壹個矩陣,得到結果向量:
在這裏,結果向量的維數小於原始向量的維數。降維要確保的是在低維空間中的投影能很好地近似表達原始向量,即重構誤差最小化。
核心的問題的如何得到投影矩陣,和其他的機器學習算法壹樣,它通過優化目標函數得到。首先考慮最簡單的情況,將向量投影到壹維空間,然後推廣到壹般情況。
假設有 n 個 d 維向量 X i ,如果要用壹個向量 X 0 來近似代替它們,這個向量取什麽值的時候近似代替的誤差最小?如果用均方誤差作為標準,就是要最小化如下函數:
顯然問題的最優解是這些向量的均值:
證明很簡單。為了求上面這個目標函數的極小值,對它的求梯度(求導)並令梯度等於0,可以得到
解這個方程即可得到上面的結論。只用均值代表整個樣本集過於簡單,誤差太大。作為改進,可以將每個向量表示成均值向量和另外壹個向量的和:
其中, e 為單位向量, a i 是標量。上面這種表示相當於把向量投影到壹維空間,坐標就是 a i 。當e和ai取什麽值的時候,這種近似表達的誤差最小?
這相當於最小化如下誤差函數:
將上面求得的ai帶入目標函數中,得到只有變量e的函數:
上式的後半部分和e無關,由於e是單位向量,因此有 ||e||=1 的約束,這個約束條件可以寫成e T e=1。我們要求解的是壹個帶等式約束的極值問題,可以使用拉格朗日乘數法。構造拉格朗日函數:
因此,這個矩陣半正定。這裏需要最大化 e T Se 的值,由於
因此, 為散度矩陣最大的特征值時, e T Se 有極大值,目標函數取得極小值。將上述結論從壹維推廣到 d' 維。每個向量可以表達成
在這裏 e i 是單位向量。誤差函數變成
可以證明,使得該函數取最小值的 e j 為散度矩陣最大的d'個特征值對應的單位長度特征向量,即求解下面的優化問題:
其中, tr 為矩陣的跡。矩陣W的列 e j 是要求解的跡的基向量。散度矩陣是實對稱矩陣,屬於不同特征值的特征向量相互正交。前面已經證明這個矩陣半正定,特征值非負。這些特征向量構成壹組基向量,可以用它們的線性組合來表達向量 x 。從另外壹個角度來看,這種變換將協方差矩陣對角化,相當於去除了各分量之間的相關性。
從上面的推導過程可以得到計算投影矩陣的流程如下:
(1)計算樣本集的均值向量,將所有向量減去均值,這成為白化;
(2)計算樣本集的協方差矩陣;
(3)對協方差矩陣進行特征值分解,得到所有特征值與特征向量;
(4)將特征值從大到小排序,保留最大的壹部分特征值對應的特征向量,以它們為行,形成投影矩陣。
具體保留多少個特征值由投影後的向量維數決定。使用協方差矩陣和使用散度矩陣是等價的,因為後者是前者的 n 倍,而矩陣 A 和 nA 有相同的特征向量。
得到投影矩陣之後可以進行向量降維,將其投影到低維空間。向量投影的流程如下。
(1)將樣本減掉均值向量。
(2)左乘投影矩陣,得到降維後的向量。
向量重構指根據投影後的向量重構原始向量,與向量投影的作用和過程相反。向量重構的流程如下。
(1)輸入向量左乘投影矩陣的轉置矩陣。
(2)加上均值向量,得到重構後的結果。
從上面的推導過程可以看到,在計算過程中沒有使用樣本標簽值,因此,主成分分析是壹種無監督學習算法。除了標準算法之外它還有多個變種,如稀疏主成分分析、核主成分分析、概率主分量分析等。
源碼講解視頻鏈接