主成分分析(PCA)原理及推導

轉載請聲明出處http://blog.csdn.net/zhongkejingwang/article/details/42264479

 什麼是PCA?

  在數據挖掘或者圖像處理等領域經常會用到主成分分析,這樣做的好處是使要分析的數據的維度降低了,但是數據的主要信息還能保留下來,並且,這些變換後的維兩兩不相關!至於爲什麼?那就接着往下看。在本文中,將會很詳細的解答這些問題:PCA、SVD、特徵值、奇異值、特徵向量這些關鍵詞是怎麼聯繫到一起的?又是如何在一個矩陣上體現出來?它們如何決定着一個矩陣的性質?能不能用一種直觀又容易理解的方式描述出來?

數據降維

    爲了說明什麼是數據的主成分,先從數據降維說起。數據降維是怎麼回事兒?假設三維空間中有一系列點,這些點分佈在一個過原點的斜面上,如果你用自然座標系x,y,z這三個軸來表示這組數據的話,需要使用三個維度,而事實上,這些點的分佈僅僅是在一個二維的平面上,那麼,問題出在哪裏?如果你再仔細想想,能不能把x,y,z座標系旋轉一下,使數據所在平面與x,y平面重合?這就對了!如果把旋轉後的座標系記爲x',y',z',那麼這組數據的表示只用x'和y'兩個維度表示即可!當然了,如果想恢復原來的表示方式,那就得把這兩個座標之間的變換矩陣存下來。這樣就能把數據維度降下來了!但是,我們要看到這個過程的本質,如果把這些數據按行或者按列排成一個矩陣,那麼這個矩陣的秩就是2!這些數據之間是有相關性的,這些數據構成的過原點的向量的最大線性無關組包含2個向量,這就是爲什麼一開始就假設平面過原點的原因!那麼如果平面不過原點呢?這就是數據中心化的緣故!將座標原點平移到數據中心,這樣原本不相關的數據在這個新座標系中就有相關性了!有趣的是,三點一定共面,也就是說三維空間中任意三點中心化後都是線性相關的,一般來講n維空間中的n個點一定能在一個n-1維子空間中分析!所以,不要說數據不相關,那是因爲座標沒選對!

    上面這個例子裏把數據降維後並沒有丟棄任何東西,因爲這些數據在平面以外的第三個維度的分量都爲0。現在,我假設這些數據在z'軸有一個很小的抖動,那麼我們仍然用上述的二維表示這些數據,理由是我認爲這兩個軸的信息是數據的主成分,而這些信息對於我們的分析已經足夠了,z'軸上的抖動很有可能是噪聲,也就是說本來這組數據是有相關性的,噪聲的引入,導致了數據不完全相關,但是,這些數據在z'軸上的分佈與原點構成的夾角非常小,也就是說在z'軸上有很大的相關性,綜合這些考慮,就可以認爲數據在x',y'軸上的投影構成了數據的主成分!

    現在,關於什麼是數據的主成分已經很好的回答了。下面來看一個更具體的例子。

下面是一些學生的成績:


首先,假設這些科目成績不相關,也就是說某一科考多少份與其他科沒有關係。那麼一眼就能看出來,數學、物理、化學這三門成績構成了這組數據的主成分(很顯然,數學作爲第一主成分,因爲數學成績拉的最開)。爲什麼一眼能看出來?因爲座標軸選對了!下面再看一組數據,還能不能一眼看出來:


是不是有點凌亂了?你還能看出來數據的主成分嗎?顯然不能,因爲在這座標系下數據分佈很散亂。所以說,看到事物的表象而看不到其本質,是因爲看的角度有問題!如果把這些數據在空間中畫出來,也許你一眼就能看出來。但是,對於高維數據,能想象其分佈嗎?就算能描述分佈,如何精確地找到這些主成分的軸?如何衡量你提取的主成分到底佔了整個數據的多少信息?要回答這些問題,需要將上面的分析上升到理論層面。接下來就是PCA的理論分析。

PCA推導

    以下面這幅圖開始我們的推導:


上面是二維空間中的一組數據,很明顯,數據的分佈讓我們很容易就能看出來主成分的軸(簡稱主軸)的大致方向。下面的問題就是如何通過數學計算找出主軸的方向。來看這張圖:


現在要做的事情就是尋找u1的方向,對於這點,我想好多人都有經驗,這不就是以前用最小二乘法擬合數據時做的事情嗎!對,最小二乘法求出來的直線(二維)的方向就是u1的方向!那u2的方向呢?因爲這裏是二維情況,所以u2方向就是跟u1垂直的方向,對於高維數據,怎麼知道u2的方向?經過下面的理論推導,各個主軸都能確定下來。

    給定一組數據:(如無說明,以下推導中出現的向量都是默認是列向量

               

將其中心化後表示爲:

        

         

中心化後的數據在第一主軸u1方向上分佈散的最開,也就是說在u1方向上的投影的絕對值之和最大(也可以說方差最大),計算投影的方法就是將x與u1做內積,由於只需要求u1的方向,所以設u1是單位向量。

也就是最大化下式:

                               

也即最大化:

                   

解釋:平方可以把絕對值符號拿掉,光滑曲線處理起來方便。

兩個向量做內積可以轉化成矩陣乘法:

                    

所以目標函數可以表示爲:

                                     

括號裏面就是矩陣乘法表示內積,轉置以後的行向量乘以列向量得到一個數。因爲一個數的轉置還是其本身,所以又可以將目標函數化爲:

                                 

這樣就可以把括號去掉!去掉以後變成:

                                  

由於u1和i無關,可以把它拿到求和符外面:

                                 

注意,其實括號裏面是一個矩陣乘以自身的轉置,這個矩陣形式如下:

                                

X矩陣的第i列就是xi,於是有:

                                 

所以目標函數最後化爲:

                                

上式到底有沒有最大值呢?如果沒有前面的1/n,那就是就是一個標準的二次型!並且XX'(爲了方便,用'表示轉置)得到的矩陣是一個半正定的對稱陣!爲什麼?首先XX'是對稱陣,因爲(XX')'=XX',下面證明它是半正定,什麼是半正定?就是所有特徵值大於等於0。

假設XX'的某一個特徵值爲,對應的特徵向量爲,則有:

                                                                             

                                                                 

                                                                

                      

                                                      

證明完畢!對於半正定陣的二次型,存在最大值!現在問題就是如何求目標函數的最大值?以及取最大值時u1的方向?下面介紹兩種方法。

方法一  拉格朗日乘數法

目標函數和約束條件構成了一個最大化問題:

                                                      

構造拉格朗日函數:

                                   

對u1求導

                                  

顯然,u1即爲XX'特徵值對應的特徵向量!XX'的所有特徵值和特徵向量都滿足上式,那麼將上式代入目標函數表達式即可得到

                                      

所以,如果取最大的那個特徵值,那麼得到的目標值就最大。有可能你會有疑問,爲什麼一階導數爲0就是極大值呢?那麼再求二階導數:


二階導數半負定,所以,目標函數在最大特徵值所對應的特徵向量上取得最大值!所以,第一主軸方向即爲第一大特徵值對應的特徵向量方向。第二主軸方向爲第二大特徵值對應的特徵向量方向,以此類推,證明類似。

下面介紹第二種方法

方法二  奇異值法

這方法是從矩陣分析裏面總結的,隨便取個名叫奇異值法。

首先,對於向量x,其二範數(也就是模長)的平方爲:

                                   

所以有:

        

把二次型化成一個範數的形式,最大化上式也即這個問題:對於一個矩陣,它對一個向量做變換,變換前後的向量的模長伸縮尺度如何才能最大?這個很有趣,簡直就是把矩陣的真面目給暴露出來了。爲了給出解答,下面引入矩陣分析中的一個定理:

                         

表示矩陣A的最大奇異值!一個矩陣A的奇異值爲AA'(或A'A)的特徵值開平方,前面講過AA'的特徵值都大於等於0。當x爲單位向量時,上式就是我們的目標函數表達式。然而,上式只是告訴我們能取到最大值是多少,並沒有說取到最大值時x的方向,要想知道取到最大值時的方向,那就來證明這個定理吧!

考察對稱陣

                   

               

爲其n個特徵值,並令與之對應的單位特徵向量爲:

                  

對了,忘了提醒,對稱陣不同特徵值對應的特徵向量兩兩正交!這組特徵向量構成了空間中的一組單位正交基。

任意取一個向量x,將其表示爲

                             

                          

           

代入上式可得

     

由於這些單位特徵向量兩兩正交,只有相同的做內積爲1,不同的做內積爲0.所以上式做內積出來的結果爲:

     

根據特徵值的大小關係有

                        

所以

                            

定理得證!

顯然,當時取得最大值

                        

                                        

再回到我們的問題,需要最大化:

                                  

將X'代入上面證明過程中的矩陣A,則u1的方向即爲A'A=(X')'X'=XX'對大特徵值對應的特徵向量的方向!

所以第一主軸已經找到,第二主軸爲次大特徵值對應的特徵向量的方向,以此類推。

兩種方法殊途同歸,現在來解答關於主成分保留佔比的問題。上面我們知道第一主軸對應的最大值是最大奇異值(也就是AA'最大特徵值開平方),第二主軸對應的最大值是次大奇異值,以此類推。那麼假設取前r大奇異值對應的主軸作爲提取的主成分,則提取後的數據信息佔比爲:

                                                             

分子是前r大奇異值的平方和,分母是所有奇異值的平方和。



到此,主成分分析PCA就講完了,文章最後提到了奇異值,關於這個,後面的奇異值分解(SVD)文章將會詳細講解並給出其具體應用!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章