Kernel PCA
PCA是一個有效了解資料分佈的方式。然而由於他是線性的,因此在許多狀況無法被直接套用。Kernel PCA解除了線性分析的限制。
注意
本篇內容需要對PCA有一定程度的了解。建議先看過PCA篇的內容。
簡介
關於kernel PCA的用途在PCA篇已經介紹過了,這裡簡介這個方法和PCA的差異之處。
在PCA中,我們定義一個covariance matrix ,並利用這個matrix來定義資料的好壞,進而利用Singular Value Decomposition (SVD)來最大化資料的好壞。我們也提到了Kernel PCA即是把資料先投影到高維空間再來做PCA。因此,假設資料本來的設定為 則我們定義一個function投影到feature space 所以我們現在便是在計算 ,其中對於每一個元素 但是因為這樣對於每一筆資料我們都要計算一次,我們其實並不這麼做。
數學理論
Kernel Trick
Kernel trick讓我們不用將每一筆資料的算出來(又或者,我們不在乎這個關係),我們轉而要量化的是兩筆資料經過轉換後的關係。關鍵點就在,定義一個kernel function 。這個function接受兩筆資料,然後傳回一個數字代表這個關係。 所以我們要從定義出發,把所有遇到的變數都轉化為kernel function的方式表示。如此一來我們就不用詳細定義 。
待補充:kernel function重要之處
首先,是一個的矩陣,可以被改寫成 然後,先把計算eigenvector和eigenvalue的方程式寫出來(注意是一個維的向量) 結合前兩式,再兩邊同除以 再代回去計算eigenvector和eigenvalue的方程式,兩邊乘以 (把eigenvector換掉,想辦法把kernel function 湊出來) 最後generalize (讓 等於 ),就得到 同除以 ,這就是一個算 的方程式(很有趣的是,我們是在這裡才把 算出來),解出 就可以解出 ,如果我們有定義 的話。
就算沒有解出 ,我們還是可以用 解出kernel principal component
Kernel PCA
所以要如何使用kernel PCA?以下整理步驟
設計一個kernel function,把 (一個 的kernel matrix)算出來。
前面未提及的步驟:通常 的mean都不是 ,這時候要計算代替的
計算
計算
Kernel Function
有幾個常用的kernel function
Gaussian radial basis function (RBF) kernel
Sigmoid kernel
Linear kernel (這就是PCA)
Polynomial kernel
選擇一個適合的kernel需要一些對model的認識。如果對model完全不了解,可以使用Gaussian RBF作為初步嘗試。可以參考一下這篇CrossValidated的post。
結論
特點
kernel function能夠設定參數
PCA是個沒有參數的資料分析方法,因此帶有諸多限制。Kernel PCA中的 可以讓我們在設定kernel function的時候調整參數,來達到更好的效果。
待補充
其他討論
在很大的資料上使用kernel PCA
待補充