1. 程式人生 > >PCA(主成分分析)降維的概念、作用及演算法實現

PCA(主成分分析)降維的概念、作用及演算法實現

1、PCA降維的概念

Principal Component Analysis(PCA):主成分分析法,是最常用的線性降維方法。它的目標是通過某種線性投影,將高維的資料對映到低維的空間中表示,即把原先的n個特徵用數目更少的m個特徵取代,新特徵是舊特徵的線性組合。並期望在所投影的維度上資料的方差最大,儘量使新的m個特徵互不相關。從舊特徵到新特徵的對映捕獲資料中的固有變異性。以此使用較少的資料維度,同時保留住較多的原資料點的特性。

PCA的思想是將n維特徵對映到k維上(k<n),這k維是全新的正交特徵。這k維特徵稱為主成分,是重新構造出來的k維特徵,而不是簡單地從n維特徵中去除其餘n-k維特徵。

2、PCA降維的作用

①、資料在低維下更容易處理、更容易使用
②、相關特徵容易在資料中明確的顯示出來,例如:兩維、三維資料,能進行視覺化展示
③、去除資料噪聲
④、降低演算法開銷

3、PCA降維的計算步驟

下面一起通過PCA方法把二維資料降成一維來熟悉PCA降維的計算步驟。

原資料如下:

①、計算樣本均值

②、用樣本資料減去樣本均值

運算結果如下:

③、計算資料的主成分。

矩陣的主成分是其協方差矩陣的特徵向量按照對應的特徵值大小排序得到的。主成分可以通過兩種方法計算:第一種方法是計算資料協方差矩陣。因為協方差矩陣是方陣,所以我們可以用前面的方法計算特徵值和特徵向量。第二種方法是用資料矩陣的奇異值分解(singular value decomposition)來找協方差矩陣的特徵向量和特徵值的平方根。

上述資料集的解釋變數協方差矩陣如下: 

用前面介紹過的方法,特徵值是1.25057433和0.03398123,單位特徵向量是:

下面我們把資料對映到主成分上。第一主成分是最大特徵值對應的特徵向量,因此我們要建一個轉換矩陣,它的每一列都是主成分的特徵向量。如果我們要把5維資料降成3維,那麼我們就要用一個3維矩陣做轉換矩陣。在本例中,我們將把我們的二維資料對映成一維,因此我們只需要用特徵向量中的第一主成分作為轉換矩陣。最後,我們用資料矩陣右乘轉換矩陣。

下面就是第一主成分對映的結果: 

4、PCA降維的程式碼實現及結果

Python程式碼實現如下:

import numpy as np
x = np.mat([[ 0.9, 2.4, 1.2, 0.5, 0.3, 1.8, 0.5, 0.3, 2.5, 1.3],
            [ 1, 2.6, 1.7, 0.7, 0.7, 1.4, 0.6, 0.6, 2.6, 1.1]])
x = x.T
T = x - x.mean(axis=0)
C = np.cov(x.T)
w,v = np.linalg.eig(C)
v_ = np.mat(v[:,0])     #每個特徵值對應的是特徵矩陣的每個列向量
v_ = v_.T               #預設以行向量儲存,轉換成公式中的列向量形式
y = T * v_
print(y)

執行結果如下:

5、參考資料:

https://www.imooc.com/article/44218

https://blog.csdn.net/HLBoy_happy/article/details/77146012