PCA(主成分分析)原理詳解與python實現

2021-10-14 17:08:58 字數 2665 閱讀 9868

pca是一種資料降維的方法。當我們在處理一些高維且冗餘資料時,可以使用pca對資料進行降維,去除冗餘資訊,提高執行速度。如上圖所示,左邊3d影象,存在大量冗餘資料,我們把這樣的資料轉移到2d可以更加清晰的觀察資料本身,同時降低計算複雜度。

1.pca原理詳解

如果我們要對上圖二維空間的特徵點做特徵降維,那怎樣的降維結果對我們來說是好的呢?其實,二維特徵降維就是找座標系投影,如圖可以看到紅色箭頭與黃色箭頭兩個座標軸。如果我們將特徵對映到黃色軸,二維特徵點將會大量重疊在黃色軸上,損失大量原始資訊是我們不想見到的。而對映到紅色軸上,相較於其他座標軸,這個特徵壓縮過程可以將資訊損失降低到最小。

總結來說,我們希望投影後的資料點盡可能地分散,這種分散程度在數學上可以用方差來表示。同時,為了減少特徵的冗餘資訊,我們希望降維後的特徵互不相關,而不相關性可以用協方差來衡量。因此,我們可以先求出原始資料的協方差矩陣,協方差矩陣對角線元素是資料的方差,其他元素是特徵之間的相關係數,我們希望降維後的方差盡量大,相關係數為0,那麼利用正交變換將此協方差矩陣變換成對角陣,並提取前k個特徵值對應的特徵向量,即可完成轉移矩陣。

2.pca具體步驟

以x為例,我們用pca將其降維到一維。

1)求協方差矩陣

2)求協方差矩陣的特徵值與特徵向量

求解後的特徵值為

對應的特徵向量為

3)選k個最大的特徵值對應的特徵向量形成轉移局正,獲得降維後的表示

結果如圖所示

3.python實現

##python實現pca

import numpy as np

defpca

(x,k)

:#k is the components you want

#mean of each feature

n_samples, n_features = x.shape

mean=np.array(

[np.mean(x[

:,i]

)for i in

range

(n_features)])

#normalization

norm_x=x-mean

#scatter matrix

scatter_matrix=np.dot(np.transpose(norm_x)

,norm_x)

#calculate the eigenvectors and eigenvalues

eig_val, eig_vec = np.linalg.eig(scatter_matrix)

eig_pairs =

[(np.

abs(eig_val[i]

), eig_vec[

:,i]

)for i in

range

(n_features)

]# sort eig_vec based on eig_val from highest to lowest

eig_pairs.sort(reverse=

true

)# select the top k eig_vec

feature=np.array(

[ele[1]

for ele in eig_pairs[

:k]]

)#get new data

data=np.dot(norm_x,np.transpose(feature)

)return data

x = np.array([[

-1,1

],[-

2,-1

],[-

3,-2

],[1

,1],

[2,1

],[3

,2]]

)print

(pca(x,1)

)

PCA主成分分析原理

一 步驟 1.去除平均值 對特徵中心化處理 2.計算協方差矩陣 3.計算協方差矩陣的特徵值和特徵向量 4.將特徵值排序 5.保留前n個最大的特徵值對應的特徵向量 6.將原始特徵轉換到上面得到的n個特徵向量構建的新空間中 最後兩步,實現了特徵壓縮 二 原理 1 pca的主要思想是將n維特徵對映到k維上...

pca主成分分析 PCA主成分分析(中)

矩陣 matrix,很容易讓人們想到那部著名的科幻電影 駭客帝國 事實上,我們又何嘗不是真的生活在matrix中。機器學習處理的大多數資料,都是以 矩陣 形式儲存的。矩陣是向量的組合,而乙個向量代表一組資料,資料又是多維度的。比如每個人的都具有身高 體重 長相 性情等多個維度的資訊資料,而這些多維度...

主成分分析PCA

主要參考這篇文章 個人總結 pca是一種對取樣資料提取主要成分,從而達到降維的目的。相比於上篇文章介紹到的svd降維不同,svd降維是指減少資料的儲存空間,資料的實際資訊沒有缺少。個人感覺pca更類似與svd的去噪的過程。pca求解過程中,涉及到了svd的使用。針對資料集d 假設di 的維度為 w ...