從主座標分析(PCO)到kernel PCA

       PCA是一種經典的降維方法,相信大家都很熟悉PCA的原理了,PCO其實只是PCA換一種角度來做,都是在做奇異值分解。PCA做法:原始數據矩陣 XX\in R^{n\times p}, 先做中心化處理得到 \bar{X},計算方差矩陣 S=\bar{X}^{T}\bar{X},然後計算 S 的最大 q 個特徵值對應的特徵向量,然後和原始特徵相乘,即得到降維的結果。爲了更清楚的顯示它的本質,將這個過程表示成矩陣。

        將 X 中心化表示成矩陣的形式, I_{n} 表示單位矩陣,1_{n} 表示全1 的n 維列向量: \bar{X}=(I_{_{n}}-1/n1_{n}1_{n}^{T})X

記   H=(I_{_{n}}-1/n1_{n}1_{n}^{T}) ,  我們稱之爲中心矩陣,它的本質就是對數據做中心化處理,即數據矩陣,減去均值矩陣。它有一個很好的性質就是H^{n}=H,即它是等冪的,可以手動驗證一下。那麼我們終於可以得到方差矩陣理想的形式了。 S=\bar{X}^{T}\bar{X}=X^{T}HHX=X^{T}HX,希望大家沒有暈。PCA其實就是在對X^{T}HHX 操作。好,重點來了,PCO馬上就呼之欲出了,它就是,是是是真的是,對HXX^{T}H求特徵值,然後就可以直接得到降維結果了,連和數據矩陣相乘都不需要。下面來證明這一點。

       假設 ABx=\lambda x, 那麼 BABx=\lambda Bx,即BAAB 的特徵值一樣,特徵向量之間存在一定的關係,後面的kernel pca還要要用到這個關係。我們把X^{T}H看作A, 把HX看作B。原來我們做pca時是求出 q 個特徵向量之後,將其排成矩陣 G_{q}, 然後 HXG_{k} 就是我們的結果。現在由於X^{T}HHXHXX^{T}H的特徵值之間存在一定的關係,所以如果 G_{q}是 原來方差矩陣的特徵值,那麼HXX^{T}H的特徵值就是HXG_{k},這說明直接對HXX^{T}H求特徵值就得到了pca的結果,這樣是不是就直接得到了結果,有沒有很神奇呢?這裏本質上就是對HXX^{T}HX^{T}HHX做奇異值分解,奇異值是一樣的。還沒有結束,我們還需要對HXX^{T}H的特徵值做歸一化處理,這裏不是歸一化到1,我們記HXX^{T}H的特徵值爲 z_{i}, 要讓 z_{i}^{T}z_{i}=\lambda _{i},  \lambda _{i} 是對應的第 i 個特徵值。我們再來總結一下PCO的做法:

        記 T=HXX^{T}H,令 z_{i} 是 T 的第i 個特徵值,即 Tz_{i}=\lambda _{i}z_{i} ,對其做歸一化處理,z_{i}^{T}z_{i}=\lambda _{i}i=1.....q,那麼Z=(z_{1},...z_{q})就是Xq維空間的principal coordinates。

       注意上面HXX^{T}H矩陣中存在XX^{T},XX^{T}是樣本之間的內積,可以看作是一個線性核的核矩陣,是不是馬上就感覺可以用強大的kernel方法呢,kernel函數本質上是某個高維空間的內積,如果我們將上面的數據矩陣內積XX^{T}用kernel矩陣代替,是不是就可以看作是在某個高維空間進行pca處理呢,因此kernel

pca 也呼之欲出了,鼓掌...。kernel方法只需要提供kernel就行了,並不需要直接用到低維空間特徵在高維空間的表示。下面來介紹一波kernel pca。

       假設高維空間特徵矩陣爲F,kernel 矩陣K=FF^{T},注意這裏只是假定高維空間矩陣F,它的形式我們根本不需要知道。那麼現在是對F來做PCA,但是我們根本就不知道 F 是什麼,因此方差矩陣F^{T}HF沒辦法來求,但是,還記得前面PCO的做法嗎,做不了F^{T}HF,我們可以來做HFF^{T}H啊,而FF^{T}是已知的,就是kernel 矩陣K,到這裏,是不是就一下子光明起來了呢?

F^{T}HHFF^{T}Hv=\lambda F^{T}Hv, 即F^{T}HHF對應特徵值爲\lambda的特徵向量是F^{T}Hv,做歸一化處理,  

                                                                u=\frac{F^{T}Hv}{||v^{T}HFF^{T}Hv||}_{2}=\lambda ^{-1/2}F^{T}Hv

這就是pca降維時要用到的特徵向量,當對一個高維空間特徵 f 進行降維時,首先減去均值,f-1/nF^{T}1_{n},然後乘u,

得到投影 :y=(f-1/nF^{T}1n)^{T}\lambda ^{-1/2}F^{T}Hv=\lambda ^{-1/2}f^{T}F^{T}Hv-1/nln^{T}FF^{T}Hvf^{T}F^{T}f 與F中每一個特徵的內積,可以利用核函數求出來,而FF^{T}就是kernel K,是已知的,因此整個結果也就可以求出來的,這就是kernel pca, 這個過程中儘管我們用到了 f,F ,但我們不需要具體知道它們是什麼,只需要一個核函數就行了,這樣就等價於在一個高維空間做了pca降維。

       最後來一個總結,pca利用方差矩陣X^{T}HX求得特徵值,pco利用HXX^{T}H直接可以得到降維結果,因爲它們的特徵值相同,特徵向量存在對應關係,而kpca是在變換後的高維特徵空間進行pca,即需要求得F^{T}HF的特徵值,然而我們不知道F 的具體形式,從而藉助HFF^{T}H 來求特徵值,做到最後,只需要核矩陣,就可以完成在高維空間的降維。

 

 

 

      

 

 

 

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