原文: https://zhuanlan.zhihu.com/p/26951643
在多元統計分析中,主成分分析(Principal components analysis,PCA)是一種分析、簡化數據集的技術。主成分分析經常用於減少數據集的維數,同時保持數據集中的對方差貢獻最大的特征。這是通過保留低階主成分,忽略高階主成分做到的。這樣低階成分往往能夠保留住數據的最重要方面。
PCA在機器學習中經常被用到,是數據預處理的重要步驟。它主要基於以下考慮:
- 高維特征中很多特征之間存在相關性,含有冗余信息
- 相比於低維數據,高維數據計算更復雜
PCA的數學原理
如下圖,平面上有很多二維空間的特征點,如果想對這些特征點做特征降維(變為一維),應該怎么做呢?大家應該都知道需要進行投影,但還要考慮在哪個方向上進行投影,例如圖中需要投影到長箭頭方向即可,但考慮為什么不在短箭頭上投影?
PCA本質上是一個有損的特征壓縮過程,但是我們期望損失的精度盡可能地少,也就是希望壓縮的過程中保留最多的原始信息。要達到這種目的,我們希望降維(投影)后的數據點盡可能地分散。如圖,相比於長箭頭,如果在短箭頭上進行投影,那么重疊的點會更多,也就意味着信息丟失的更多,因而選擇長箭頭方向。
基於這種思想,我們希望投影后的數據點盡可能地分散。而這種分散程度在數學上可以利用方差來表示。設降維后的特征為,也就是希望
盡可能地大(
為特征
中的值,
為均值),而由於在PCA降維前,一般已經做了特征零均值化處理,為了方便,記
。
同樣,為了減少特征的冗余信息,我們希望降維后的各特征之間互不相關。而不相關性可以用協方差來衡量。設降維后的兩個特征為、
,則希望
為0。
現假設我們的數據為
構造出協方差矩陣,並乘以系數,則
可以看出的對角線元素就是各特征的方差,其他各位置的元素就是各特征之間的協方差。因而只需要降維后的數據協方差矩陣滿足對角矩陣的條件即可。
設為原始數據
做完PCA降維后的數據,滿足
(矩陣乘法相當於映射,若
為的列向量為基向量,那么就相當於映射到新的坐標系),
,
分別為對應的協方差矩陣,那么
因而,我們只需要計算出,使
滿足對角矩陣的條件即可。而
為實對稱矩陣,我們只需要對它做矩陣對角化即可。
PCA的原理基本就是這樣,還是挺簡單的。
PCA的推導證明
PCA的構建:PCA需要構建一個編碼器,由輸入
得到一個最優編碼
(若
,則做了降維編碼);同時有一個解碼器
,解碼后的輸出
盡可能地與
相近。
PCA由我們所選擇的解碼器決定,在數學上,我們使用矩陣將映射回
,即
,其中
定義解碼的矩陣。
為了限制PCA的唯一性,我們限制中所有列向量彼此正交且均有單位范數(否則
、
同比例增加、減少會產生無數個解)。
在數學上,為了滿足PCA構建中的條件,我們利用范數來衡量
與
的相近程度。即
,也就是
該最小化函數可以簡化為
因而,優化目標變為,再帶入
,
再求偏導
於是我們可以得到編碼函數,PCA的重構操作也就可以定義為
。問題接着就轉化成如何求編碼矩陣
。由於PCA算法是在整個數據矩陣上進行編碼,因而也要用
對所有數據進行解碼,所以需要最小化所有維上的誤差矩陣的Frobenius范數:
我們考慮的情況,則
是一個單一向量
,則上式可以轉化為
而為標量,轉置與自身相等,上式通常寫作
再將每一個輸入點疊加起來,我們得到
Frobenius范數簡化成(考慮約束條件)
最后的優化目標可以利用以及拉格朗日乘數法來求解,可得最優的
是
的最大特征值對應的特征向量。
上面的推導特定於的情況,僅有一個主成分。一般來說,矩陣
由
的前
個最大的特征值對應的特征向量組成(利用歸納法,將
表示為
的函數即可,需要兩個輔助矩陣:單位對角矩陣
以及
,省去證明過程)。
參考
- 主成分分析
- CodingLabs - PCA的數學原理
- 《Deep Learning》 Ian Goodfellow et al.