原文: https://zhuanlan.zhihu.com/p/26951643
在多元統計分析中,主成分分析(Principal components analysis,PCA)是一種分析、簡化數據集的技術。主成分分析經常用於減少數據集的維數,同時保持數據集中的對方差貢獻最大的特征。這是通過保留低階主成分,忽略高階主成分做到的。這樣低階成分往往能夠保留住數據的最重要方面。
PCA在機器學習中經常被用到,是數據預處理的重要步驟。它主要基於以下考慮:
- 高維特征中很多特征之間存在相關性,含有冗余信息
- 相比於低維數據,高維數據計算更復雜
PCA的數學原理
如下圖,平面上有很多二維空間的特征點,如果想對這些特征點做特征降維(變為一維),應該怎么做呢?大家應該都知道需要進行投影,但還要考慮在哪個方向上進行投影,例如圖中需要投影到長箭頭方向即可,但考慮為什么不在短箭頭上投影?
PCA本質上是一個有損的特征壓縮過程,但是我們期望損失的精度盡可能地少,也就是希望壓縮的過程中保留最多的原始信息。要達到這種目的,我們希望降維(投影)后的數據點盡可能地分散。如圖,相比於長箭頭,如果在短箭頭上進行投影,那么重疊的點會更多,也就意味着信息丟失的更多,因而選擇長箭頭方向。

基於這種思想,我們希望投影后的數據點盡可能地分散。而這種分散程度在數學上可以利用方差來表示。設降維后的特征為
,也就是希望
盡可能地大(
為特征
中的值,
為均值),而由於在PCA降維前,一般已經做了特征零均值化處理,為了方便,記
。
同樣,為了減少特征的冗余信息,我們希望降維后的各特征之間互不相關。而不相關性可以用協方差來衡量。設降維后的兩個特征為
、
,則希望
為0。
現假設我們的數據為
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduJTdEK1grJTNEKyU1Q2xlZnQlNUIrJTVDYmVnaW4lN0JtYXRyaXglN0QrYV8xJTI2Yl8xJTVDJTVDK2FfMiUyNmJfMiU1QyU1QyslNUN2ZG90cyUyNiU1Q3Zkb3RzJTVDJTVDK2FfbSUyNmJfbSslNUNlbmQlN0JtYXRyaXglN0QrJTVDcmlnaHQlNUQrJTVDZW5kJTdCYWxpZ24lN0Q=.png)
構造出協方差矩陣,並乘以系數
,則
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduJTdEKyU1Q2ZyYWMlN0IxJTdEJTdCbSU3RFglNUVUWCslM0QrJTVDbGVmdCU1QislNUNiZWdpbiU3Qm1hdHJpeCU3RCslNUNmcmFjJTdCMSU3RCU3Qm0lN0QlNUNzdW1faSU1RW1hX2klNUUyJTI2JTVDZnJhYyU3QjElN0QlN0JtJTdEJTVDc3VtX2klNUVtYV9pYl9pJTVDJTVDKyU1Q2ZyYWMlN0IxJTdEJTdCbSU3RCU1Q3N1bV9pJTVFbWFfaWJfaSUyNiU1Q2ZyYWMlN0IxJTdEJTdCbSU3RCU1Q3N1bV9pJTVFbWJfaSU1RTIlNUMlNUMrJTVDZW5kJTdCbWF0cml4JTdEKyU1Q3JpZ2h0JTVEKyU1Q2VuZCU3QmFsaWduJTdE.png)
可以看出
的對角線元素就是各特征的方差,其他各位置的元素就是各特征之間的協方差。因而只需要降維后的數據協方差矩陣滿足對角矩陣的條件即可。
設
為原始數據
做完PCA降維后的數據,滿足
(矩陣乘法相當於映射,若
為的列向量為基向量,那么就相當於映射到新的坐標系),
,
分別為對應的協方差矩陣,那么
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduJTdEKyUyNllfYyUzRCU1Q2ZyYWMlN0IxJTdEJTdCbSU3RFklNUVUWSU1QyU1QyslMjYlM0QlNUNmcmFjJTdCMSU3RCU3Qm0lN0QlMjhYUCUyOSU1RVRYUCU1QyU1QyslMjYlM0QlNUNmcmFjJTdCMSU3RCU3Qm0lN0RQJTVFVFglNUVUWFAlNUMlNUMrJTI2JTNEUCU1RVQlMjglNUNmcmFjJTdCMSU3RCU3Qm0lN0RYJTVFVFglMjlQJTVDJTVDKyUyNiUzRFAlNUVUWF9jUCslNUNlbmQlN0JhbGlnbiU3RA==.png)
因而,我們只需要計算出
,使
滿足對角矩陣的條件即可。而
為實對稱矩陣,我們只需要對它做矩陣對角化即可。
PCA的原理基本就是這樣,還是挺簡單的。
PCA的推導證明
PCA的構建:PCA需要構建一個編碼器
,由輸入
得到一個最優編碼
(若
,則做了降維編碼);同時有一個解碼器
,解碼后的輸出
盡可能地與
相近。
PCA由我們所選擇的解碼器決定,在數學上,我們使用矩陣將
映射回
,即
,其中
定義解碼的矩陣。
為了限制PCA的唯一性,我們限制
中所有列向量彼此正交且均有單位范數(否則
、
同比例增加、減少會產生無數個解)。
在數學上,為了滿足PCA構建中的條件,我們利用
范數來衡量
與
的相近程度。即
,也就是![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1jJTVFJTJBJTNEYXJnbWluX2MlN0MlN0N4LWclMjhjJTI5JTdDJTdDXzIlNUUy.png)
該最小化函數可以簡化為
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduJTdEKyUyNiUyOHgtZyUyOGMlMjklMjklNUVUJTI4eC1nJTI4YyUyOSUyOSU1QyU1QyslMjYlM0R4JTVFVHgteCU1RVRnJTI4YyUyOS1nJTI4YyUyOSU1RVR4JTJCZyUyOGMlMjklNUVUZyUyOGMlMjklNUMlNUMrJTI2JTNEeCU1RVR4LTJ4JTVFVGclMjhjJTI5JTJCZyUyOGMlMjklNUVUZyUyOGMlMjkrJTVDZW5kJTdCYWxpZ24lN0Q=.png)
因而,優化目標變為
,再帶入
,
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduJTdEKyUyNmMlNUUlMkElM0RhcmdtaW5fYy0yeCU1RVREYyUyQmMlNUVURCU1RVREYyU1QyU1QyslMjYlM0RhcmdtaW5fYy0yeCU1RVREYyUyQmMlNUVUYyUyOEQlNUVURCUzRElfbCUyOSslNUNlbmQlN0JhbGlnbiU3RA==.png)
再求偏導
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduJTdEKyUyNiU1Q25hYmxhX2MlMjgtMnglNUVURGMlMkJjJTVFVGMlMjklM0QwJTVDJTVDKyUyNi0yRCU1RVR4JTJCMmMlM0QwJTVDJTVDKyUyNmMlM0REJTVFVHgrJTVDZW5kJTdCYWxpZ24lN0Q=.png)
於是我們可以得到編碼函數
,PCA的重構操作也就可以定義為
。問題接着就轉化成如何求編碼矩陣
。由於PCA算法是在整個數據矩陣上進行編碼,因而也要用
對所有數據進行解碼,所以需要最小化所有維上的誤差矩陣的Frobenius范數:
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1EJTVFJTJBJTNEYXJnbWluX0QlNUNzcXJ0JTdCJTVDc3VtXyU3QmklMkNqJTdEJTI4eCU1RSU3QiUyOGklMjklN0QtciUyOHglNUUlN0IlMjhpJTI5JTdEJTI5JTI5X2olNUUyJTdEfn5zdWJqZWN0fnRvfkQlNUVURCUzRElfbA==.png)
我們考慮
的情況,則
是一個單一向量
,則上式可以轉化為
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1kJTVFJTJBJTNEYXJnbWluX2QlNUNzdW1fJTdCaSU3RCU3QyU3QyUyOHglNUUlN0IlMjhpJTI5JTdELWRkJTVFVHglNUUlN0IlMjhpJTI5JTdEJTdDJTdDXzIlNUUyfn5zdWJqZWN0fnRvfiU3QyU3Q2QlN0MlN0NfMiUzRDE=.png)
而
為標量,轉置與自身相等,上式通常寫作
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1kJTVFJTJBJTNEYXJnbWluX2QlNUNzdW1fJTdCaSU3RCU3QyU3QyUyOHglNUUlN0IlMjhpJTI5JTdELXglNUUlN0IlMjhpJTI5VCU3RGRkJTdDJTdDXzIlNUUyfn5zdWJqZWN0fnRvfiU3QyU3Q2QlN0MlN0NfMiUzRDE=.png)
再將每一個輸入點疊加起來,我們得到
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD1kJTVFJTJBJTNEYXJnbWluX2QlNUNzdW1fJTdCaSU3RCU3QyU3Q1gtWCU1RSU3QlQlN0RkZCU3QyU3Q19GJTVFMn5+c3ViamVjdH50b35kJTVFVGQlM0Qx.png)
Frobenius范數簡化成(考慮約束條件
)
![[公式]](/image/aHR0cHM6Ly93d3cuemhpaHUuY29tL2VxdWF0aW9uP3RleD0lNUNiZWdpbiU3QmFsaWduJTdEKyUyNmFyZ21pbl9kJTVDc3VtXyU3QmklN0QlN0MlN0NYLVglNUUlN0JUJTdEZGQlN0MlN0NfRiU1RTIlNUMlNUMrJTI2JTNEYXJnbWluX2RUciUyOCUyOFgtWCU1RSU3QlQlN0RkZCUyOSU1RVQlMjhYLVglNUUlN0JUJTdEZGQlMjklMjklNUMlNUMrJTI2JTNEYXJnbWluX2RUciUyOFglNUVUWC1YJTVFVFhkJTVFVC1kZCU1RVRYJTVFVFglMkJkZCU1RVRYJTVFVFhkZCU1RVQlMjklNUMlNUMrJTI2JTNEYXJnbWluX2QtVHIlMjhYJTVFVFhkJTVFVCUyOSUyQlRyJTI4ZGQlNUVUWCU1RVRYJTI5JTJCVHIlMjhkZCU1RVRYJTVFVFhkZCU1RVQlMjklNUMlNUMrJTI2JTNEYXJnbWluX2QtMlRyJTI4WCU1RVRYZGQlNUVUJTI5JTJCVHIlMjhkZCU1RVRYJTVFVFhkZCU1RVQlMjklNUMlNUMrJTI2JTNEYXJnbWluX2QtMlRyJTI4WCU1RVRYZGQlNUVUJTI5JTJCVHIlMjhYJTVFVFhkZCU1RVRkZCU1RVQlMjklNUMlNUMrJTI2JTNEYXJnbWluX2QtVHIlMjhYJTVFVFhkZCU1RVQlMjklNUMlNUMrJTI2JTNEYXJnbWF4X2RUciUyOFglNUVUWGRkJTVFVCUyOSU1QyU1QyslMjYlM0RhcmdtYXhfZFRyJTI4ZCU1RVRYJTVFVFhkJTI5fn5zdWJqZWN0fnRvfmQlNUVUZCUzRDErJTVDZW5kJTdCYWxpZ24lN0Q=.png)
最后的優化目標可以利用
以及拉格朗日乘數法來求解,可得最優的
是
的最大特征值對應的特征向量。
上面的推導特定於
的情況,僅有一個主成分。一般來說,矩陣
由
的前
個最大的特征值對應的特征向量組成(利用歸納法,將
表示為
的函數即可,需要兩個輔助矩陣:單位對角矩陣
以及
,省去證明過程)。
參考
- 主成分分析
- CodingLabs - PCA的數學原理
- 《Deep Learning》 Ian Goodfellow et al.
