機器學習_學習筆記系列(61):核主成分分析 (Kernel Principal Component Analysis)

--

前兩篇我們提到了如何用PCA將高維數據降到低維度空間,但是PCA降維方式屬於線性的,所以當我們的分布或是資料比較複雜時,用線性降維的方式可能導致很多資訊會損失掉,所以對於此,我們得用一個新的非線性的方式,能讓我們降為的時候,資訊量損失的更少。

而我們今天要來介紹的就是Kernel Principal Component Analysis。

Kernel PCA

關於Kernel PCA其由三個德國機器學習領域的大老B Schölkopf、A Smola、KR Müller所提出。論文名稱就叫做

Kernel Principal Component Analysis

這邊真的不禁讚嘆,以前的人發paper真的不用什麼buzz words就可以好幾千個citation。

回顧一下我們之前PCA的章節,我們拿到資料後會計算矩陣

然後我們再計算S的eigenvalue和eigenvector就能求出我們投影的矩陣。

而對於Kernel PCA,我們在這邊我們引入非線性的Kernel funciton進來,其可以寫成

而這邊的Kernel function必須滿足

接下來我們這裡要做的事情一樣,也是找到S的eigenvalue和eigenvector

但是這裡我們會設我們的eigenvector可以表示成

所以如果我們對式子左右兩邊各乘上Φ

然後kernel function設為

我們就可以寫成

同除K

我們的問題就變得很簡單了,現在我們只要找K/N的eigenvalue和eigenvector,然後我們就可以得出我們投影過後的座標

Example

我們現在用手寫辨識來看PCA和Kernel PCA差別(Kernel為Radial Base)

我們可以看到用Kernel PCA在分類上,非常明顯的比一般的PCA來得好。

Python Sample Code:

Github:

Reference:

[1] Schölkopf, B., Smola, A., & Müller, K. R. (1997, October). Kernel principal component analysis. In International conference on artificial neural networks (pp. 583–588). Springer, Berlin, Heidelberg.

--

--

劉智皓 (Chih-Hao Liu)
劉智皓 (Chih-Hao Liu)

Written by 劉智皓 (Chih-Hao Liu)

豬屎屋AI RD,熱愛AI研究、LLM/SD模型、RAG應用、CUDA/HIP加速運算、訓練推論加速,同時也是5G技術愛好者,研讀過3GPP/ETSI/O-RAN Spec和O-RAN/ONAP/OAI開源軟體。

No responses yet