【降維方法】- 主成分分析(PCA)

推薦一篇絕對好的文章:理解PCA的數學原理

首先PCA設計嚴格的數學推導證明!尤其設計矩陣的知識比較多,這裏會簡要地記錄自己學習過程中覺得很重要的東西,具體的細節可以看我上面推薦的一篇文章。

簡介

PCA(Principle Component Analysis)主成分分析,主要應用於數據降維,它是一種非監督的降維方法,主要捕獲觀測數據之間的變異程度。

當數據集的維度過高之後,運用各種算法處理起來的時間複雜度可能會很高,所以需要對數據進行降維處理,而且可以儘量保證數據的信息丟失最少。總的來說,PCA的過程步驟如下:
設有 MN 維數據;
(1)、將原始數據按列組成 NM 的矩陣 X
(2)、將 X 的每一行(代表一個屬性字段)進行零均值化,即減去這一行的均值;
(3)、求出協方差矩陣:C=1mXXT
(4)、求出協方差矩陣的特徵值及其對應的特徵向量;
(5)、將特徵向量按對應特徵值大小從上到下按行排列成矩陣,取前 k 行組成矩陣 P
(6)、Y=PX 即爲降維到 k 維後的數據;

證明步驟

關鍵的步驟:
我們主要目的是:實現數據的降維,並且能夠保證數據儘可能不要丟失信息。
這裏需要實現的就是兩點
(1)、最大化數據投影后的方差;
(2)、使降維後數據之間的重疊信息儘量少,也就是新的 K 維空間的基向量相互正交。
所以導致了一個結果
(1)、降維後數據的協方差矩陣應該是對角矩陣;
(2)、而且對角線上的元素值儘可能大。
最後推導得到:
優化目標變成了尋找一個矩陣P ,滿足PCPT 是一個對角矩陣,並且對角元素按從大到小依次排列,那麼P的前K行就是要尋找的基,用P的前K行組成的矩陣乘以X就使得X從N維降到了K維並滿足上述優化條件

這裏寫圖片描述

討論

  1. PCA捕捉了大部分預測變量方差,第一個主成分是在所有可能的線性組合中能夠捕捉最多預測變量方差的組合。之後的主成分依次與之前的主成分不相關。
  2. PCA作爲非監督的降維方法,也不會考慮數據的測量標度和分佈,它不會考慮結局變量。所以,沒有相關的指導信息,可能得到的主成分與最終的結局變量沒有任何關係。

代碼

PCA在sklearn中的使用:here

PCA算法一個簡單的實現:Github

from sklearn.decomposition import PCA   
pca = PCA(n_components=1)  
newData = pca.fit_transform(data)

討論

各降維方法的討論見:here

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