Isomap

Basic

Isomap | Membentangkan manifold nonlinier

Dibuat: Pembaruan terakhir: Waktu baca: 2 menit

Isomap menjaga jarak geodesik pada graf tetangga lalu menjalankan MDS klasik untuk “menggelar” manifold melengkung seperti Swiss roll.


1. Ide dasar #

  1. Bentuk graf tetangga dengan (k)-NN atau radius (\varepsilon).
  2. Hitung jarak lintasan terpendek (geodesik) antar pasangan titik pada graf tersebut.
  3. Masukkan matriks jarak itu ke MDS agar memperoleh embedding berdimensi lebih rendah.

Hasilnya mempertahankan struktur global sambil membuka lipatan manifold.


2. Contoh Python #

import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
from sklearn.datasets import make_swiss_roll
from sklearn.manifold import Isomap

X, color = make_swiss_roll(n_samples=1500, noise=0.05, random_state=0)
iso = Isomap(n_neighbors=10, n_components=2)
emb = iso.fit_transform(X)

fig, axes = plt.subplots(1, 2, figsize=(12, 5))
axes[0].scatter(X[:, 0], X[:, 2], c=color, cmap="Spectral", s=5)
axes[0].set_title("Swiss roll asli")
axes[1].scatter(emb[:, 0], emb[:, 1], c=color, cmap="Spectral", s=5)
axes[1].set_title("Embedding Isomap")
for ax in axes:
    ax.set_xticks([])
    ax.set_yticks([])
plt.tight_layout()
plt.show()

Demo Isomap


3. Parameter penting #

  • n_neighbors: menentukan graf lokal; terlalu kecil membuat graf terputus, terlalu besar merusak bentuk manifold.
  • n_components: jumlah dimensi target (biasanya 2–3 untuk visualisasi).
  • Bersihkan noise/duplikat dan lakukan penskalaan fitur sebelum membuat graf.

4. Kelebihan vs kekurangan #

KelebihanKekurangan
Menjaga struktur manifold dan jarak geodesikBiaya tinggi karena perlu shortest path untuk semua pasangan
Visualisasi intuitifSangat sensitif terhadap pemilihan tetangga

5. Catatan #

  • Isomap = graf tetangga + MDS; pastikan grafnya benar-benar merefleksikan topologi data.
  • Periksa apakah graf memiliki satu komponen terhubung; jika tidak, embedding akan pecah.
  • Alternatif modern seperti UMAP/t-SNE lebih cepat saat fokus pada hubungan lokal.