1. 程式人生 > >【模式識別與機器學習】——PCA主成分分析

【模式識別與機器學習】——PCA主成分分析

 

基本思想

其基本思想就是設法提取資料的主成分(或者說是主要資訊),然後摒棄冗餘資訊(或次要資訊),從而達到壓縮的目的。本文將從更深的層次上討論PCA的原理,以及Kernel化的PCA。

引子

首先我們來考察一下,這裡的資訊冗餘是如何體現的。如下圖所示,我們有一組二維資料點,從圖上不難發現這組資料的兩個維度之間具有很高的相關性。因為這種相關性,我們就可以認為其實有一個維度是冗餘的,因為當已知其中一個維度時,便可以據此大致推斷出另外一個維度的情況。

為了剔除資訊冗餘,我們設想把這些資料轉換到另外一個座標系下(或者說是把原座標系進行旋轉),例如像下圖所示情況,當然這裡通過平移設法把原資料的均值變成了零。

下圖是經過座標系旋轉之後的資料點分佈情況。你可以看出,原資料點的兩個維度之間的相關性已經被大大削弱(就這個例子而言幾乎已經被徹底抹消)。

 

同時你也會發現在新座標系中,橫軸這個維度x相比於縱軸那個維度y所表現出來的重要性更高,因為從橫軸這個維度上更大程度地反應出了資料分佈的特點。也就是說,本來需要用兩個維度來描述的資料,現在也能夠在很大程度地保留資料分佈特點的情況下通過一個維度來表達。如果我們僅保留x這個維度,而捨棄y那個維度,其實就起到了資料壓縮的效果。而且,捨棄y這個維度之後,我們再把資料集恢復到原座標系上,你會發現關於資料分佈情況的資訊確實在很大程度上得以保留了(如下圖所示)。

正式推導

上面所描述的也就是PCA要達到的目的。

但是,如何用數學的語言來描述這個目的呢?

或者說,我們要找到一個變換使得座標系旋轉的效果能夠實現削弱相關性或將主要資訊集中在少數幾個維度上這一任務,應該如何確定所需之變換(或者座標系旋轉的角度)呢?

我們還是來看一個例子,假設現在有如下圖所示的一些資料,它們形成了一個橢圓形狀的點陣,那麼這個橢圓有一個長軸和一個短軸。在短軸方向上,資料變化很少;相反,長軸的方向資料分散得更開,對資料點分佈情況的解釋力也就更強。

 

那麼數學上如何定義資料“分散得更開”這一概念呢?沒錯,這裡就需要用到方差這個概念。如下圖所示,現在有5個點,假設有兩個座標軸w和v,它們的原點都位於O。然後,我們分別把這5個點向w和v做投影,投影后的點再計算相對於原點的方差,可知在v軸上的方差要大於w軸上的方差,所以如果把原座標軸旋轉到v軸的方向上,相比於旋轉到w軸的方向上,資料點會分散得更開!

(動圖連結:https://blog.csdn.net/baimafujinji/article/details/79376378)

假設訓練樣本的平均值為零。PCA的目標是在空間中找到一組包含最大方差量的向量。

上圖中的一點 xj 向 v 軸做投影,所得之投影向量為

其中θ是向量Oxj與v的夾角。如果這裡的向量v是單位向量,則有

這同時表明其係數其實就是內積

 所有畫素xj在該歸一化方向v上的投影是

預測的方差是

其中,C是協方差矩陣.

因為vTCv 就是 variance,而我們的目標是最大化variance,因此 the first principal vector can be found by the following equation:

 

鑑於是帶等式約束的優化問題,遂採用拉格朗日乘數法,寫出拉格朗日乘數式如下:

 

然後將上式對v和λ求導,並令導數等於0,則有

 

於是我們知道,原來的argmax式子就等價於find the largest eigenvalue of the following eigenvalue problem:

 

注意我們前面的argmax式子要算的是使得vTCv 達到最大的v,而v可以由上式解出,據此再來計算vTCv ,則有

 

也就是說我們要做的就是求解Cv=λv,從而得到一個最大的λ,而這個λ對應特徵向量v所指示的就是使得variance最大的方向。Projections of the data on the principal axes are called 主成分, also known as PC scores。注意因為v是單位向量,所以點 xj 向 v 軸做投影所得之 PC score 就是 vT·xj。而且這也是最大的主成分方向。如果要再多加的一個方向的話,則繼續求一個次大的λ,而這個λ對應特徵向量v所指示的就是使得variance第二大的方向,並以此類推。

 

更進一步,因為C是Covariance matrix,所以它是對稱的,對於一個對稱矩陣而言,如果它有N個不同的特徵值,那麼這些特徵值對應的特徵向量就會彼此正交。如果把Cv=λv,中的向量寫成矩陣的形式,也就是採用矩陣對角化(特徵值分解)的形式,則有C=VΛVT,其中V是特徵向量的矩陣(每列是特徵向量),並且Λ是對角矩陣,其特徵值λi在對角線上以遞減的順序。 特徵向量稱為主軸或資料的主方向。

 

注意到Covariance matrix(這裡使用了前面給定的零均值假設)

 

如果令,其中xi 表示一個列向量,則有

 

主軸上的資料投影稱為主成分,也稱為PC得分; 這些可以看作是新的,變換的變數。 第j個主要成分由XV的第j列給出。 新PC空間中第i個數據點的座標由第i行XV給出。

---------------------
原文:https://blog.csdn.net/baimafujinji/article/details/79376378
--------------------- 

 演算法及例項

PCA演算法

總結一下PCA的演算法步驟:

例項

原始資料集矩陣X:

求均值後:

再求協方差矩陣:

特徵值:

對應的特徵向量:

標準化(其實不標準化也一樣,只是稍顯不專業)

 

選擇較大特徵值對應的特徵向量:

執行PCA變換:Y=PX,得到的Y就是PCA降維後的值資料集矩陣: