KPCA,中文名稱”核主成分分析“,是對PCA算法的非線性擴展,言外之意,PCA是線性的,其對於非線性數據往往顯得無能為力,例如,不同人之間的人臉圖像,肯定存在非線性關系,自己做的基於ORL數據集的實驗,PCA能夠達到的識別率只有88%,而同樣是無監督學習的KPCA算法,能夠輕松的達到93%左右的識別率(雖然這二者的主要目的是降維,而不是分類,但也可以用於分類),這其中很大一部分原因是,KPCA能夠挖掘到數據集中蘊含的非線性信息。
1. 理論部分
KPCA的公式推導和PCA十分相似,只是存在兩點創新:
1. 為了更好地處理非線性數據,引入非線性映射函數
,將原空間中的數據映射到高維空間,注意,這個
是隱性的,我們不知道,也不需要知道它的具體形式是啥。
2. 引入了一個定理:空間中的任一向量(哪怕是基向量),都可以由該空間中的所有樣本線性表示,這點對KPCA很重要,我想大概當時那個大牛想出KPCA的時候,這點就是它最大的靈感吧。話說這和”稀疏“的思想比較像。
假設中心化后的樣本集合X(d*N,N個樣本,維數d維,樣本”按列排列“),現將X映射到高維空間,得到
,假設在這個高維空間中,本來在原空間中線性不可分的樣本現在線性可分了,然后呢?想啥呢!果斷上PCA啊!~
於是乎!假設D(D >> d)維向量
為高維空間中的特征向量,
為對應的特征值,高維空間中的PCA如下:
(1)
和PCA太像了吧?這個時候,在利用剛才的定理,將特征向量
利用樣本集合
線性表示,如下:
(2)
然后,在把
代入上上公式,得到如下的形式:
(3)
進一步,等式兩邊同時左乘
,得到如下公式:
(4)
你可能會問,這個有啥用?
這樣做的目的是,構造兩個
出來,進一步用核矩陣K(為對稱矩陣)替代,其中:
(5)
第二個等號,是源於核函數的性質,核函數比較多,有如下幾種:

於是,公式進一步變為如下形式:
(6)
兩邊同時去除K,得到了PCA相似度極高的求解公式:
(7)
求解公式的含義就是求K最大的幾個特征值所對應的特征向量,由於K為對稱矩陣,所得的解向量彼此之間肯定是正交的。
但是,請注意,這里的
只是K的特征向量,但是其不是高維空間中的特征向量,回看公式(2),高維空間中的特征向量w應該是由
進一步求出。
這時有的朋友可能會問,這個時候,如果給定一個測試樣本
,應該如何降維,如何測試?
是這樣的,既然我們可以得到高維空間的一組基
,這組基可以構成高維空間的一個子空間,我們的目的就是得到測試樣本
在這個子空間中的線性表示,也就是降維之后的向量。具體如下:
(8)
於是呼~就可以對
降維了,然后就做你想要做的事情。。。。
2. 實驗部分
做了一些仿真實驗,分別比較了PCA與KPCA之間的效果,KPCA基於不同核函數的效果,二者對於原始數據的要求,以及效果隨着參數變化的規律。
1)下面展示的是“無重疊的”非線性可分數據下,PCA與KPCA(基於高斯核)的區別,注意,原始數據是二維數據,投影之后也是二維數據



2)下面展示的是“部分重疊的”非線性可分數據下,PCA與KPCA的區別



3)下面展示的是“無高斯擾動的”非線性可分數據下,PCA與KPCA的區別



4)下面展示的是上述三類數據下,基於多項式核函數的KPCA效果



5)下面展示的是在“部分重疊的”非線性可分數據下,基於多項式核函數的KPCA在不同多項式參數下的效果圖






3. 實驗結論
4. 代碼
轉自:http://blog.csdn.NET/wsj998689aa/article/details/40398777 作者:迷霧forest
