PCA(主成分分析)的簡單理解


PCA(Principal Components Analysis),它是一種“投影(projection)技巧”,就是把高維空間上的數據映射到低維空間。比如三維空間的一個球,往坐標軸方向投影,變成了一個圓。球是3維的,圓是2維的。在球變成圓的這個投影過程中,丟失了原來物體(球)的一部分“性質”---圓不是球了,只有面積沒有體積了;也保留了原來物體的一部分性質---圓 和 球 還是很像的……

 

而對於一個訓練樣本y而言,假設它有M個特征(M維),y={y1, y2,...yM},通過PCA,進行投影,降維成D維(M>D)。為什么要降維?最主要的兩個原因是:

①可視化,我們只能看到一維、二維、三維空間上的物體,當某物體需要4維或以上特征表示時,只能想象了……

②特征選擇(feature selection),比如說采集到的某個樣本 由 20維特征 組成,其中有一些特征屬於“噪音(noise)",而由於某些原因,我們不想要這些“噪音”。又比如說,存在特征冗余,描述一個球,可以用如下特征:(體積、面積、直徑、半徑),其實我只需要知道半徑、直徑、面積、體積這些都可以通過公式求出來。因此,體積、面積 、直徑這些特征,相對於半徑來說,是冗余的特征。

 

如何降維?

PCA降維的目標就是:找到一種投影方式,將原來的M維樣本y 變成 D維樣本x,並且使得投影之后的D維樣本x,能夠盡可能多地保存原來的樣本y中的信息。由於將y投影成x,可以有不同的投影方向,那哪個投影方向比較好呢?即,能夠盡可能多地保存原來的樣本y中的信息呢?

maintains the characteristics of the original object as much as possible

 

可以使用方差來衡量投影方向的好壞。如下圖:

上圖中有“兩團點”,在聚類算法中稱為有兩個聚簇。將這兩個簇中的點 往B方向投影,B箭頭指向的那條直線上的點,表示 投影之后得到的新樣本點,已經看不出有兩個簇了。而此時,得到的方差是σ2B=8.35.

往A方向投影,A箭頭指向的那條直線上的點,還能夠明顯地看出有 兩類,即還能夠保存“兩個簇“的結構,這說明投影方向A比B 要好,因為原來的樣本點有兩個簇,而往A方向投影后,還能看出有兩個簇。此時得到的方差σ2A=17.37.

這表明:可以使用 投影后的所有樣本點的 方差大小,來衡量投影方向的好壞!

 

假設有N個樣本點,用Y表示,每個樣本點是M維的。現在使用PCA降維,降成D維的,用X表示。X中還是有N個樣本點,只是每個樣本的維數變成D維的了。

這種投影方式,用矩陣乘法表示:XN*D=YN*M*WM*D

對於投影之后的樣本x 的第d個特征xnd而言,有:

xn1=w1T*yn ,   xn2=w2T*yn ,....    xnd=wdT*yn

xn=(xn1,xn2,...xnd)T=WT*yn

也就是說,PCA降維的本質是:找到一個M*D維的矩陣W。可以對W=(w1,w2,...wd)進行一些約束:||wi||=1,且wTi*wj=0 (j != i),只要W滿足:X=Y*W即可。

在數學上,PCA投影是一種線性變換。因為,根據線性變換的定義

給定函數L: Rn-->Rm,如果:

  1. 對於任意的x belongs to Rn,a 屬於實數R,有L(a*x)=a*L(x)
  2. 對於任意的x,y belongs to Rn,有L(x+y)=L(x)+L(y)

則稱函數L是一個線性變換。線性變換對加法和數乘封閉。上面的條件1,表示L對數乘封閉;條件2,表示L對加法封閉。

而對於矩陣A而言, A*x=b,是滿足線性變換的定義的。比如,對於向量x和y,A(x+y)=A*x + A*y;對於實數a,A(a*x)=a*A*x

將矩陣A 作用於 向量x 上,即矩陣A與向量x相乘,就相當於 函數L 作用於x上。

因此,由xn=(xn1,xn2,...xnd)T=WT*yn,可知:PCA是一個線性變換。

 

回到公式:XN*D=YN*M*WM*D,如何選擇合適的W矩陣呢?----使用方差最大來確定W矩陣。因為 方差 可以 衡量投影方向的好壞。

而將矩陣A與向量u相乘,其實就是改變了向量u的方向和大小而已。但是,如果向量u是矩陣A的特征向量,那么 A*u 不會改變向量u的方向。如下圖:

 

在求解 投影后的樣本集X 的方差之前,先假設原始樣本集Y的每一維特征的均值為0(m個0),即y¯¯=[0,0,...0]T為了簡化討論,假設將原來的M維降成 D=1維。此時,W矩陣就退化為只有一個向量。即尋找一個向量w,對於Y中任何一個樣本yn=(yn1,yn2,...ynm),有xn =(xn1,xn2,...xnd)=(xn1)= wT*yn

 

根據公式:xn=wT*yn   得到樣本集X的均值為:

再根據方差的定義,和 X的均值為0,故X的方差為:

對於樣本集Y而言,根據樣本協方差矩陣的定義 和 y的均值y¯¯=0,可知:C與樣本協方差矩陣密切相關。

因此,要想最大化X的方差,就是最大化wTCw,而C是一個確定的值---由Y的協方差矩陣決定了。因此,我們的目標是盡可能地使w大,而根據我們前面的約束:||w||=1。故最大化wTCw可以使用拉格朗日乘子,轉化成如下的約束優化問題:

通過求偏導數,求得:使L最大化 的w的公式:Cw=λw。而這剛好是特征向量的定義,λ是矩陣C的特征值,w則是對應的特征向量。

 

由於 ||w||=wTw=1,σ2 = wTCw,左邊乘上wTw,得到:σ2 *wTw=wTCw,也即:σ2w=Cw,因此方差σ2就是特征值λ,而最大化方差,其實就是選擇矩陣C的最大化的特征值而已,相應的變換向量w,其實就是特征值對應的特征向量。

 

因此,更一般地,將原來的樣本集Y,M維特征 降到 D維,其實就是計算矩陣C(與Y的協方差矩陣息息相關)的特征值和特征向量,由於 C 是一個M*M維的矩陣,因此一共有 m 個特征值,及其對應的 m 個特征向量。而我們只需要選擇 前D個 最大的 特征值 對應的特征向量,並將之 作為線性變換矩陣 W 即可。

 

參考文獻:《a first course in machine learning》第七章

原文:http://www.cnblogs.com/hapjin/p/6728697.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM