PCA數學推導及原理(轉)


原文: 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范數簡化成(考慮約束條件[公式]

[公式]

最后的優化目標可以利用[公式]以及拉格朗日乘數法來求解,可得最優的[公式][公式]的最大特征值對應的特征向量。

上面的推導特定於[公式]的情況,僅有一個主成分。一般來說,矩陣[公式][公式]的前[公式]個最大的特征值對應的特征向量組成(利用歸納法,將[公式]表示為[公式]的函數即可,需要兩個輔助矩陣:單位對角矩陣[公式]以及[公式],省去證明過程)。

參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM