PCA revisit

都知道PCA能夠作降維,那它爲何能夠降維,到底是怎麼降維的呢?html

1. 爲何咱們要降維?學習

咱們的樣本數據好好的,爲何要去作降維,第一個要想清楚這個問題。spa

  • 也許你是要訓練一個分類器,以爲當前特徵維度的過高,想去除冗餘的維度,選擇有區分性的維度
  • 也許你是以爲維度過高,致使系統速度慢,存儲開銷大
  • 也許你是以爲數據裏面有噪聲,想去除噪聲

總之不少緣由致使咱們要去作降維,可是有兩個主要的因素,就是去除數據裏的冗餘和噪聲。code

 

2. PCA是怎麼去作降維的,怎麼去除冗餘和噪聲的?htm

PCA有一個假設,數據中越是有區分度的維度,他的方差越大,例如咱們的信號自己。越是沒有區分度的維度,方差越小能量越小,例如噪聲;blog

另外,若是兩個維度相關性很高,那麼其中一個維度就是冗餘的,對於學習分類器沒有很大的幫助,例如一個大學生的成績裏面,他的線性代數的成績,和他的矩陣分析的成績這兩個相關性就很高,分類器只須要其中的一個來判斷這個學生是工科生仍是文科生。it

綜合以上兩點,咱們降維以後的數據必定要每一個維度的方差大,同時維度之間的相關性小。方法

如何描述方差和相關性,有一個東西能夠同時描述他們兩——協方差矩陣im

協方差矩陣是一個方陣,i,j列表示樣本的第 i 維和第 j 維之間的相關性 ( i = j 時描述的是第 i 維的方差)。總結

所以,理想的協方差矩陣的對角線應該是很大的值,而非對角線的位置都接近於0,這樣才能保證方差大,相關性小呀!

若是當前樣本的協方差矩陣已是對角矩陣了,那咱們就不用作PCA降維了,由於他們的特性已經很好了!很不幸,咱們的數據一般都不是那麼好,協方差矩陣不是理想的樣子,極可能相關性很大。那麼很明確,咱們要作的就是使得降維以後的數據協方差矩陣是對角矩陣。

那麼就要作矩陣對角化唄,什麼方法能夠獲得對角矩陣,這個就是特徵值分解,

A = P * B * P(T)    (1)

B就是對角化的矩陣,A是原協方差矩陣,而咱們知道B對角線上都是特徵值,P裏面都是對應的特徵向量。若是咱們降維以後的協方差矩陣張成B這個樣就行了!

說到這裏,協方差矩陣的公式還沒提呢。

C = S(T) * S / (m - 1); (2)

C是協方差矩陣, S是m * d的樣本數據矩陣,表明咱們有m個樣本,每一個樣本的維度是d。

那麼當前有 

A = S(T) * S / (m - 1);(3)

咱們想要的是 

B = S’(T) * S’ / (m - 1);(4)

S’就是咱們降維以後的樣本數據。 咱們把公式(1) A = P * B * P(T),變一個樣子就是 P(T) * A * P = B; 結合式子(3),因而乎 

B = P(T) * A * P = P(T) * S(T) * S * P / (m - 1) =  (SP)(T) * (SP) / (m - 1);再結合式子(4)

SP不就是咱們想要的降維以後的數據S'嗎?這裏,若是把P中的特徵向量去掉幾個特徵值低的,那麼不只選出了方差大的數據,還去除了冗餘。所以,PCA就達到了目的了。

 

3. 總結

因此降維的公式也出來了, S’ = S * P,P是特徵值大的維度對應的特徵向量。

這是今天看完PCA以後的一點小總結,關於如何作特徵值分解,今天也看了許久,感受要補充的矩陣只是仍是頗有一些的。

貼一下http://mathfaculty.fullerton.edu/mathews/n2003/QRMethodMod.html 提到的用QR method來作特徵值分解的僞代碼。

QR Algorithm.  The pseudocode for the QR method is:

        1.  i = 0  
        2.  [Graphics:Images/QRmethodMod_gr_110.gif]    
        3.  repeat  
        4.       Factor  [Graphics:Images/QRmethodMod_gr_111.gif]  
        5.            [Graphics:Images/QRmethodMod_gr_112.gif]
        6.            i = i+1  
        7.  until convergence 

迭代的方式用QR分解來求特徵值。這都是題外話了!

總之,咱們須要理解PCA爲何能用協方差矩陣作特徵值分解來求解,爲何這樣作降維的結果就是好的結果,認真理解了才能更有效地使用它 。

相關文章
相關標籤/搜索