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
總結
以上是生活随笔為你收集整理的PCA(主成分分析)降维的概念、作用及算法实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 矩阵的特征值、特征向量及其代码求解实现
- 下一篇: 【opencv+机器学习】error C