PCA 的數學原理和可視化效果

本文結構:

  • 什么是 PCA
  • 數學原理
  • 可視化效果

1. 什么是 PCA

PCA (principal component analysis, 主成分分析) 是機器學習中對數據進行降維的一種方法。

例如,我們有這樣的交易數據,它有這幾個特征:(日期, 瀏覽量, 訪客數, 下單數, 成交數, 成交金額),從經驗可知,“瀏覽量”和“訪客數”,“下單數”和“成交數”之間會具有較強的相關關系。這種情況下,我們保留其中的兩個維度就可以保證原有的信息完整。

但是當我們在做降維的時候,會丟失掉一部分信息。

例如, 下面 5 個數據,如果向 x 軸投影,那么左邊的兩個點會重疊在一起,中間的兩個點也會重疊在一起,5 個點結果投影到 x 軸后就剩下 3 個點了,這是一種嚴重的信息丟失:

所以我們希望找到低維空間的方向上,原數據映射后的方差盡可能的大,也就是意味著數據點會盡量分散開來,這樣可以保留更多的信息。

PCA 追求的是在降維之后能夠最大化保持數據的內在信息,并通過衡量在投影方向上的數據方差的大小來衡量該方向的重要性,它是丟失原始數據信息最少的一種線性降維方式。

PCA的算法步驟:

設有 m 條 n 維數據。
1)將原始數據按列組成 n 行 m 列矩陣 X
2)將 X 的每一行(代表一個屬性字段)進行零均值化,即減去這一行的均值
3)求出協方差矩陣 C=1/mXX??
4)求出協方差矩陣的特征值及對應的特征向量
5)將特征向量按對應特征值大小從上到下按行排列成矩陣,取前 k 行組成矩陣 P
6)Y=PX 即為降維到 k 維后的數據


2. 數學原理

要找到這個低維空間,意味著要確定一組基

如下圖,藍色正交箭頭就是新的坐標系的基向量:

我們希望原數據在新坐標系上的投影盡可能分散

同一個點,在新坐標系下的投影,就是它和兩個基的內積:

因為 A 與 B 的內積等于 A?B=|A||B|cos(a)
B 為基時,|B|=1,則 A?B=|A|cos(a),即這個內積等于 A 到 B 的投影長度,也是坐標值。

這種分散程度,可以用數學上的方差來表述:

一個字段的方差可以看做是每個元素與字段均值的差的平方和的均值,即:


在 PCA 第二步已經將每個字段的均值都化為 0 了,因此這里方差可以直接用每個元素的平方和除以元素個數表示:


所以就要最大化數據映射后的方差。

不僅如此,當我們選擇第二個投影方向時,
不希望它們之間存在線性相關性的,不然的話必然存在重復表示的信息。

在數學上可以用兩個字段的協方差表示其相關性,由于已經讓每個字段均值為0,則:

所以希望協方差為 0,這樣兩個字段完全獨立,那么第二個基只能在與第一個基正交的方向上選擇。

于是,我們得到了降維問題的優化目標
將一組 N 維向量降為 K 維,目標是選擇 K 個單位正交基,使得原始數據變換到這組基上后,各字段兩兩間協方差為0,并且字段的方差則盡可能大(即在正交的約束下,取最大的K個方差)。

假設我們有數據 X,它有 a 和 b 兩個字段:

X 的協方差矩陣計算如下:

可以看到這個矩陣對角線上的兩個元素分別是兩個字段的方差,而其它元素是 a 和 b 的協方差。

于是優化目前等價于將原始數據變換到這組基上后,要使新數據表示的協方差矩陣對角化,并且在對角線上將元素按大小從上到下排列。

即令 P 是這組基按行組成的矩陣,則 Y=PX 就是 X 對 P 做基變換后的數據。(6)
記 Y 的協方差矩陣為 D,
那么 D 與 C 有如下關系:

這樣,優化目標變成了尋找一個矩陣 P,滿足 PCP?? 是一個對角矩陣,即對 C 進行對角化(3)

如何求 P:

C 是一個是對稱矩陣,在線性代數書上可以找到“實對稱矩陣對角化”的內容。

一個 n 行 n 列的實對稱矩陣一定可以找到 n 個單位正交特征向量 e1,e2,?,en,

由它們按列組成的矩陣 E=(e1,e2,?,en) 可以將 C 對角化:(4)

對角元素為各特征向量對應的特征值

于是 P=E??,即 P 的每一行都是 C 的一個特征向量。(5)

這樣,就得到了 PCA 步驟中的第 3~6 步。


3. 可視化效果

例如下圖,我們要將 2 維變成 1 維,
空心圓為數據,得到紅箭頭為第一主成分方向,藍箭頭為第二主成分方向:


將兩個主成分分別作為新的坐標系時,可以看到下圖中十字數據的狀態:


當我們只看第一主成分時,如下面所示,藍色點是降維后的數據:
可以看出在 PC1 上的方差很大,而 PC2 上的方差比較小,相對而言,PC2 就可以被忽略,進而實現了降維


我們可以將降維后的數據與原數據進行對比,發現原數據在 PC2 上的信息已經被丟棄



資料:
機器學習
https://stats.stackexchange.com/questions/76906/how-can-i-interpret-what-i-get-out-of-pca
http://blog.codinglabs.org/articles/pca-tutorial.html


推薦閱讀 歷史技術博文鏈接匯總
http://www.lxweimin.com/p/28f02bb59fe5
也許可以找到你想要的:
[入門問題][TensorFlow][深度學習][強化學習][神經網絡][機器學習][自然語言處理][聊天機器人]

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容