原創|一文讀懂主成分分析(PCA)

作者:賈恩東

本文長度爲2500字,建議閱讀7分鐘

這篇文章主要帶大家入門PCA,逐漸理解PCA最原始的概念和設計思路,以及簡單的實現原理。


主成分分析,即Principle Component Analysis (PCA),是一種傳統的統計學方法,被機器學習領域引入後,通常被認爲是一種特殊的非監督學習算法,其可以對複雜或多變量的數據做預處理,以減少次要變量,便於進一步使用精簡後的主要變量進行數學建模和統計學模型的訓練,所以PCA又被稱爲主變量分析。

 

朱小明買了五個西瓜,每個西瓜都有重量、顏色、形狀、紋路、氣味五種屬性:

序號

西瓜A

西瓜B

西瓜C

西瓜D

西瓜E

重量

1

3

2

8

8

顏色

1

2

2

8

9

形狀

6

7

6

6

7

紋路

3

2

3

9

9

氣味

1

2

1

1

1

注:這裏的離散屬性我們已經做了某種數字化處理,比如顏色數值越小表示越接近淺黃色,顏色數值越大越接近深綠色,形狀數值越接近1代表越接近球形等。

朱小明回到家,觀察了西瓜們的五種屬性,他覺得對於這五個西瓜來說,氣味和形狀是完全沒有必要去關注的,可以直接丟棄不看。爲什麼?

 

差異才是信息

對於西瓜的重量屬性和形狀屬性,我們發現這倆種似乎是不同的兩種性質。把西瓜們的重量x和形狀屬性y拿出來畫圖示意:

 

我們從數據分佈上估計,相比x屬性來說,y屬性的方差(variance)不大,即所有的西瓜這個屬性都不怎麼變化。因此比較所有的西瓜時其實不用考慮y這一屬性(反正所有西瓜的y屬性數值都差不多相同,所以就不用關注了)。

在數據科學和統計應用中,通常需要對含有多個變量的數據進行觀測,收集後進行分析然後尋找規律,從而建模分析或者預測。多變量的大數據集固然不錯,但是也在一定程度上增加了數據採集的工作量和問題分析和建立模型的複雜性。

因此需要找到一種合理的方法,在減少需要分析的指標(即所謂的降維),以及儘量減少降維帶來的信息損失,達到對所收集數據進行全面分析的目的。由於各變量之間存在一定的相關關係,因此可以考慮將關係緊密的變量變成儘可能少的新變量,使這些新變量是兩兩不相關的,那麼就可以用較少的綜合指標分別代表存在於各個變量中的各類信息。

考慮更一般的情形

上面舉的西瓜的例子過於簡單,顯然形狀和氣味的屬性差異太小,可以直接捨棄。但更一般的情形是某一些屬性的線性組合纔會差異太小,如果要降低維度,消減多餘的屬性,我們必須要找到這種組合。(實際生活中,很多變量中可能存在兩種變量線性相關,造成信息冗餘,實際上我們可以捨棄其中一種變量,在這裏就表現爲當存在某兩種屬性的數值其線性組合接近0時可以捨棄其中一個變量)

以下圖爲例,有兩個屬性x,y的樣本徘徊在一條直線附近。

我們總是認爲屬性差異(variance)最大的情況下樣本蘊含最豐富的信息,反之亦然。因此,我們會把特徵空間裏的base(座標軸,下圖中的黑色直線)重新選取並把base的數量由2減少到1,選擇讓這些點在新base下的信息最大。新base下的新樣本就是一條直線上的點(紅色的點),他們只有一個屬性,一個維度。下圖所示,我們總是有兩種選擇(我們真的只有這兩種嗎?的確有更多的選擇,不過就不是PCA而是其他的降維算法了):

  1. 找到新的base,使得樣本點們到base的投影點們在新base下的分佈數值方差最大,差異最大即信息最多,

  2. 找到新的base,使得樣本點們到base的投影距離平方和最小,都很小那丟棄後損失的信息就少了。

 

但實際上可以證明:這兩種方法是等價的。(先思考一下這是爲什麼?)

 

數學推導

數據集記爲,若簡單假設每個樣本具有兩個屬性,容易知道,所有樣本的屬性構成了一個均值爲的分佈,該分佈具有自己的均值和方差。但假如我們事先對數據集做了去中心化的預處理,即所有屬性都減去了它們的均值,則這裏有預處理後的特徵的方差應爲。

我們這時要尋找一條新的base: 使得所有:在的新base:上的投影后數值分佈的方差最大。

這裏要注意兩點:

1)投影不會改變分佈的均值,所以投影后的均值依然爲0,

2)因爲的模長任意,因此這裏可令其爲1,即有

綜上,要使投影后的變量分佈方差

最大,而,因此等價變換後要使得最大,記該最大值爲。(事實上,樣本的協方差矩陣很像這個矩陣,這個矩陣是半正定的,其特徵值均不小於0) 

 

這裏把類似協方差矩陣的這一坨記爲矩陣,那麼此時就變成了。即需要求解矩陣的特徵向量。所以的最大值也就是矩陣最大的特徵值,而此時的新base也就是最大特徵值對應的特徵向量。

Finished!

以上就是PCA的最簡單版本的算法推導。

一句話概括,要對一批樣本進行降維,需要先對所有的屬性進行歸一化的減均值處理,然後求其協方差矩陣的特徵向量,將特徵值按從大到小的順序排列,特徵值越大的新基對應的新樣本屬性就越重要。最後我們就可以按照需要捨棄最後面特徵值較小對應的特徵向量作爲新基下投影的樣本屬性了。

Not finish! We need to think more!

我們留下了四個疑問:

1.最開始的時候,我們假設樣本點中線性組合後的一些屬性可能方差就變成0了,那我們就可以扔掉這些屬性,但是如果這些屬性必須經過非線性組合之後,方差纔可能變成0,我們應該怎麼發現這種組合並加以選擇行的丟棄呢?

比如我們有以下樣本點(7.3, 1.6, 8.1) ,(5.2, 9.7, 0.6) ,(6.8,3,8.1) ,(1.7,9.6,5.2) ,(3.7,8.9,5.4),我們可以把這三個維度降低到幾維還能保持90%以上的方差呢?

 (提示:kernel PCA,答案是可以降低到1維)

2.我們可以用求新基下投影距離平方和最小值的方式推導嗎?

3.協方差矩陣爲什麼會出現?回想一下協方差矩陣在統計學中的含義是什麼?

因爲方差是一些平方和,所以肯定不是負的,那麼輕易可以得到協方差矩陣的特徵值一定不爲負。那實際用matlab或者python計算的時候爲什麼還會出現特徵值是負數的情況呢?(SVD浮出身影)

4.聽小朋友說t-SNE也是一種降維方法,通常用於高維空間到低維空間的可視化分析。那麼這裏的t-SNE採用的是PCA的方法嗎?(不是)

問題留給聰明的讀者你來查閱,調研和思考。

 

 總結

本文主要簡單介紹了PCA的原理和思想,但更多相關知識比如計算的穩定性、如何加速計算、遇到龐大的稀疏矩陣如何處理等並未涉及,希望大家能舉一反三,積極思考,自學成才。

A word to finish: PCA雖然好,但也不是萬能的。

優點:無監督學習,根本不需要樣本的標籤信息;PCA後所有主成分正交,再無信息冗餘之憂;計算簡單。

缺點:解釋性不佳(比如:PCA後發現西瓜最重要的屬性是0.3×顏色+0.7×重量。這是什麼屬性??);某些特殊情況下方差小的屬性未必信息無用,方差最大化未必就一定信息最大。

 

參考資料:

http://setosa.io/ev/principal-component-analysis/


如您想與我們保持交流探討、持續獲得數據科學領域相關動態,包括大數據技術類、行業前沿應用、講座論壇活動信息、各種活動福利等內容,敬請掃碼加入數據派THU粉絲交流羣,紅數點恭候各位。

編輯:於騰凱

校對:林亦霖

作者簡介

賈恩東,9字清華本科,後於國科大就讀博士,現爲中國軟件博士後。主要研究方向:傳統機器學習,傳統數字圖像處理,深度學習與目標檢測,少樣本學習,自監督學習等。

數據派研究部介紹

數據派研究部成立於2017年初,以興趣爲核心劃分多個組別,各組既遵循研究部整體的知識分享實踐項目規劃,又各具特色:

算法模型組:積極組隊參加kaggle等比賽,原創手把手教系列文章;

調研分析組:通過專訪等方式調研大數據的應用,探索數據產品之美;

系統平臺組:追蹤大數據&人工智能系統平臺技術前沿,對話專家;

自然語言處理組:重於實踐,積極參加比賽及策劃各類文本分析項目;

製造業大數據組:秉工業強國之夢,產學研政結合,挖掘數據價值;

數據可視化組:將信息與藝術融合,探索數據之美,學用可視化講故事;

網絡爬蟲組:爬取網絡信息,配合其他各組開發創意項目。

點擊文末“閱讀原文”,報名數據派研究部志願者,總有一組適合你~

轉載須知

如需轉載,請在開篇顯著位置註明作者和出處(轉自:數據派THUID:DatapiTHU),並在文章結尾放置數據派醒目二維碼。有原創標識文章,請發送【文章名稱-待授權公衆號名稱及ID】至聯繫郵箱,申請白名單授權並按要求編輯。

未經許可的轉載以及改編者,我們將依法追究其法律責任。

點擊“閱讀原文”加入組織~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章