PCA降維演算法

2021-06-29 02:06:18 字數 2192 閱讀 4817

文章由兩部分構成,第一部分主要講解pca演算法的步驟,第二部分講解pca演算法的原理。

那麼首先進入第一部分

--pca演算法的步驟

① 樣本矩陣x的構成

假設待觀察變數有m個,其實相當於乙個資料在m維各維度上的座標,我們的目標是在保證比較資料之間相似性不失真的前提下,將描述資料的維度盡量減小至l維(l樣本矩陣x在這裡用x1,x2,...,xn共n個資料(這些資料都是以列向量的形式出現)來表示,那麼x=[x1 x2 ... xn]mxn顯而易見。

② 計算樣本x均值

計算第m維(m=1,2,...,m)的均值如下:

③ 計算觀察值與均值的偏差

在每一維上,用當前值x[m,n]減去u[m],用矩陣運算表示如下:

明顯,h是一行向量,u是一列向量。

④ 計算協方差矩陣

根據協方差矩陣的計算定義wiki

我們認為bi代表b的第i行,那麼由協方差矩陣

推知<>表示向量的內積,也就是每一項的積之和。

⑤ 計算協方差矩陣c的特徵值和特徵向量

若xa=aa,其中a為一列向量,a為一實數。那麼a就被稱為矩陣x的特徵值,而a則是特徵值a對應的特徵向量。    

順便扯一下,在matlab裡面,求解上述a以及a,使用eig函式。如[d,v] = eig(c),那麼d就是n個列特徵向量,而v是對角矩陣,對角線上的元素就是特徵值。

⑥ 排序

將特徵值按從大到小的順序排列,並根據特徵值調整特徵向量的排布。

d'=sort(d);v'=sort(v);

⑦ 計算總能量並選取其中的較大值

若v'為c的對角陣,那麼總能量為對角線所有特徵值之和s。

由於在步驟⑥裡面已對v進行了重新排序,所以當v'前幾個特徵值之和大於等於s的90%時,可以認為這幾個特徵值可以用來"表徵"當前矩陣。

假設這樣的特徵值有l個。

⑧ 計算基向量矩陣w

實際上,w是v矩陣的前l列,所以w的大小就是 mxl 。

⑨ 計算z-分數(這一步可選可不選)

z[i,j]=b[i,j]/sqrt(d[i,i])

⑩ 計算降維後的新樣本矩陣

w*表示w的轉置的共軛矩陣,大小為 lxm , 而z的大小為 mxn , 所以y的大小為 lxn , 即降維為 n 個 l 維向量。

現在進入第二部分

--pca演算法的原理

首先讓我們來了解一下特徵值和特徵向量的幾何意義

根據上面步驟⑤的說法,很明顯的發現乙個特定的變換,它的特徵向量是這樣一種向量,它經過這種特定的變換後保持方向不變,只是進行長度上的伸縮而已(再想想特徵向量的原始定義ax=cx, cx是方陣a對向量x進行變換後的結果,但顯然cx和x的方向相同)。

乙個變換(矩陣)可由它的所有特徵向量完全表示,而每乙個向量所對應的特徵值,就代表了矩陣在這一向量上的貢獻率——說的通俗一點就是能量(power)。

請看,當x=c1·x1+c2·x2時,而x1和x2均為矩陣a的特徵向量(λ1和λ2分別為他們的特徵值),那麼ax=c1·λ1·x1+c2·λ2·x2 ,只不過是在兩基方向上的投影長度發生了變化。

我們知道,乙個變換可由乙個矩陣乘法表示,那麼乙個空間座標系也可視作乙個矩陣,而這個座標系就可由這個矩陣的所有特徵向量表示,用圖來表示的話,可以想象就是乙個空間張開的各個座標角度,這一組向量可以完全表示乙個矩陣表示的空間的「特徵」,而他們的特徵值就表示了各個角度上的能量(可以想象成從各個角度上伸出的長短,越長的軸就越可以代表這個空間,它的「特徵」就越強,或者說顯性,而短軸自然就成了隱性特徵),因此,通過特徵向量/值可以完全描述某一幾何空間這一特點,使得特徵向量與特徵值在幾何(特別是空間幾何)及其應用中得以發揮。

假設2x2矩陣的兩個特徵向量如上圖紅色虛線和綠色線所示,那麼當橢圓的長軸遠大於短軸時,可以將2維的點降維成一維,及當前向量在長軸上的投影值。

大家可以看看這篇blog,寫的蠻不錯的。

再舉乙個例子,如果大家再引入乙個m維的向量p和已經降維過後的向量q比較的話,需要先減去②裡面每一維的均值,然後除以每一維的特徵值的平方根,再乘以w*就ok了。

用公式表示為:

pca降維演算法

pca主成分分析演算法,是一種線性降維,將高維座標系對映到低維座標系中。如何選擇低維座標系呢?通過協方差矩陣的特徵值和特徵向量,特徵向量代表座標系,特徵值代表對映到新座標的長度。演算法步驟 輸入 樣本集d 低維空間維數k 第一步 將樣本集中心化。每一列的特徵值減去當前列的均值 第二步 求協方差矩陣的...

PCA降維原理

在之前的介紹中,一幅影象只能表示乙個物件。那麼對於w x h的灰度影象,只能表示為w x h位的向量,那麼乙個有100 100的影象就需要10000維的向量空間。對於一幅人臉而言,是否所有維的資料都是有用的呢?在矩陣論當中我們知道,矩陣可以近似的表示為乙個特徵值與特徵向量的乘積。根據這個原理,如果我...

資料降維 PCA

模型原型 class sklearn.decomposition.pca n components none,copy true,whiten false 引數 copy 如果為false,則直接使用原始資料來訓練,結果會覆蓋原始資料所在的陣列 whiten 如果為true,則會將特徵向量除以n s...