機器學習實戰及Python實現——主成分分析(PCA)

機器學習 Python 圖像處理 編程語言 極數蝸牛 2017-05-18

本篇主要講述數據預處理的常用方法——主成分分析,包括基本概念,數學基礎,優缺點,實施步驟及Python實現等內容。

1、基本概念

主成分分析(Principal Component Analysis,PCA)是一種比較常見的數據分析方法,主要運用於數據降維,是通過線性變換將原來數據(N維數據)轉換成線性無關的維度來表示,轉換後的維度是根據方差大小排列,因此通過提取前K維(K≤N)數據,從而實現原數據的維度的下降。該方法儘可能保存了原有數據的差異性。

如圖所示,將三維降到二維空間,有效區分數據樣本。

機器學習實戰及Python實現——主成分分析(PCA)

該分析方法主要應用場景包括圖像處理,人臉識別等領域。

2、數學原理

PCA的本質就是將原數據用新的正交基來表示,其中新的維度之間相互獨立,即它們之間的協方差為0。因此假設原數據為X,降維後的數據為Y,Y=P*X,其中P為轉變函數。根據主成分分析定義選擇合適的P能夠使Y的協方差之和為0。

公式推導過程:

(1)對X數據進行均值化(每個數減去其平均值)處理,能夠簡化其平方差和協方差的計算公式。

原方差計算公式為

機器學習實戰及Python實現——主成分分析(PCA)

簡化後方差計算公式

機器學習實戰及Python實現——主成分分析(PCA)

簡化後協方差計算公式:

機器學習實戰及Python實現——主成分分析(PCA)

(2)均值化後的數據為X,則其各維度的協方差和方差的計算可通過矩陣完成;

機器學習實戰及Python實現——主成分分析(PCA)

(3)設

機器學習實戰及Python實現——主成分分析(PCA)

機器學習實戰及Python實現——主成分分析(PCA)

則可通過方陣對角化可得:

機器學習實戰及Python實現——主成分分析(PCA)

(4)計算Y=P*X的協方差

機器學習實戰及Python實現——主成分分析(PCA)

(5)根據(3)步驟和(4)步驟的公式可得

機器學習實戰及Python實現——主成分分析(PCA)

通過計算可得出轉化函數P就是樣本協方差的特徵向量的轉置。

3、優缺點

主成分分析的優點:

(1)消除了各維度之間的相關性,能夠將數據轉換成各不相關並相互獨立的主成分;

(2)降低數據間的複雜性,通過降低維度,減少了模型工作量;

(3)相對客觀,該方法不受主觀影響,也沒有參數需要調整,任何人使用該方法結果都一樣。

主成分分析缺點:

(1)將會有部分信息丟失情況;

(2)分析後的數據,其物理含義和業務理解不明確,比較模糊。

4、實施步驟

PCA的一般實施步驟為:

(1)將原始數據組成n行m列矩陣X,其中n表示特徵屬性,m表示樣本;

(2)將X的每一行(代表一個屬性字段)進行零均值化,即減去這一行的均值;

(3)計算出X的協方差矩陣C;

機器學習實戰及Python實現——主成分分析(PCA)

(4)求出協方差矩陣C的特徵值及對應的特徵向量;

(5)將特徵向量按對應特徵值大小從上到下按行排列成矩陣,取前k行組成矩陣P;

(6)計算Y=PX為降維到k維後的數據

5、Python實現

本內容以簡單示例來實現數據的主成分分析

步驟一:數據準備,導入相關數據X和程序包;其中每列表示1個樣本,每行表示一個屬性特徵值。

機器學習實戰及Python實現——主成分分析(PCA)

步驟二:均值化數據;該樣本數據屬性平均值為【2,3】,通過均值化後數據將會以0為中心分佈;

機器學習實戰及Python實現——主成分分析(PCA)

步驟三:計算X的協方差C;

機器學習實戰及Python實現——主成分分析(PCA)

步驟四:計算協方差C的特徵值和特徵向量;特徵值為【2,5,0.5】

機器學習實戰及Python實現——主成分分析(PCA)

步驟五:將特徵向量根據特徵值按從大到小排列,取值K行組成P;本次選擇k=1,其對應的最大特徵向量為【0.707,0.707】

機器學習實戰及Python實現——主成分分析(PCA)

步驟六:通過P*X,計算降維後的Y,降維後的數據為【-2.12,-0.70,0,2.12,0.70】

機器學習實戰及Python實現——主成分分析(PCA)

另外,通過以下公式t(p)*(p*x)+x_mean ,可以還原為原數據

機器學習實戰及Python實現——主成分分析(PCA)

6、經驗總結

主成分分析是一種降維的數據分析方法,一般應用於數據預處理階段,尤其在特徵維度較多的場景下,能夠有效降低模型的計算量。有以下知識點需要注意:

(1)特徵值就是指每個成分維度的方差值,特徵值的佔比表示該主成分代表了原數據的差異性的多少,也表示含有多少原始數據的信息量;

(2)一般選擇前K維的方差佔比≥80%,既能夠有效減少信息丟失,又能夠減少維度。

相關推薦

推薦中...