Kernel-PCA

Basic

Kernel PCA | Implementasi di Python

Dibuat: Pembaruan terakhir: Waktu baca: 2 menit

Kernel PCA memperluas PCA klasik dengan “kernel trick”, sehingga kita dapat menjalankan PCA di ruang fitur nonlinier tanpa menghitung transformasinya secara eksplisit.


1. Mengapa butuh kernel? #

  • PCA hanya menangkap variasi linear sehingga gagal bila data berada pada manifold melengkung.
  • Banyak dataset nyata (lingkaran konsentris, spiral) tidak bisa dipisahkan secara linear.
  • Kernel PCA memetakan data ke ruang fitur (\phi(x)) dan menggunakan produk dalam kernel untuk menemukan komponen utama di sana.

2. Rumusan #

Untuk sampel (x_i):

  1. Hitung matriks kernel $$K_{ij} = \langle \phi(x_i), \phi(x_j) \rangle = k(x_i, x_j)$$
  2. Cari autovektor $$K v = \lambda v$$ Autovektor yang telah dinormalisasi dipakai untuk memproyeksikan data seperti pada PCA.

Kernel populer: RBF (\exp(-\gamma |x - x’|^2)) dan polinomial ((\langle x, x’ \rangle + c)^d).


3. Dataset contoh #

import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
from sklearn.datasets import make_circles

X, y = make_circles(n_samples=400, factor=0.3, noise=0.15)

plt.figure(figsize=(8, 8))
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.title("Lingkaran konsentris")
plt.show()

Dataset lingkaran


4. Kernel PCA dengan scikit-learn #

from sklearn.decomposition import KernelPCA

kpca = KernelPCA(kernel="rbf", gamma=3)
X_kpca = kpca.fit_transform(X)

plt.figure(figsize=(8, 8))
plt.scatter(X_kpca[:, 0], X_kpca[:, 1], c=y)
plt.title("Embedding 2D dari Kernel PCA")
plt.show()

Hasil Kernel PCA


5. Catatan praktis #

  • Pilih kernel yang sesuai bentuk data; RBF aman untuk kebanyakan kasus.
  • Skala fitur sebelum membentuk matriks kernel agar parameter (\gamma) bermakna.
  • Matriks Gram berukuran (n \times n); perhatikan memori.
  • Pemahaman kernel PCA juga berguna saat memakai SVM atau metode kernel lainnya.

Ringkasan #

  • Kernel PCA memungkinkan kita menangani struktur nonlinier sambil mempertahankan intuisi PCA.
  • Analisis jumlah komponen melalui spektrum autovalor sebelum memproyeksikan.
  • Untuk dataset besar, pertimbangkan pendekatan aproksimasi (Nyström, random Fourier features).