T Sne.id
Ringkasan
- t-SNE menjaga struktur tetangga lokal dengan mencocokkan kemiripan pasangan titik antara ruang asli dan ruang rendah.
- Metode ini kuat untuk visualisasi eksploratif klaster.
- Hasil sensitif terhadap perplexity, learning rate, dan inisialisasi, jadi perlu uji stabilitas.
Intuisi #
t-SNE menekankan siapa yang bertetangga dekat, bukan jarak global absolut. Interpretasi terbaiknya adalah peta kedekatan lokal untuk eksplorasi data.
Penjelasan Rinci #
1. Intuisi #
- Hitung probabilitas kesamaan (P_{ij}) di ruang asli dengan kernel Gaussian (diatur oleh perplexity).
- Definisikan (Q_{ij}) di ruang rendah memakai distribusi t-Student berekor panjang.
- Minimalkan (\mathrm{KL}(P \parallel Q)) menggunakan gradien.
- Ekor panjang mencegah titik menumpuk di pusat.
2. Contoh Python #
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
from sklearn.datasets import load_digits
from sklearn.manifold import TSNE
from sklearn.preprocessing import StandardScaler
X, y = load_digits(return_X_y=True)
X = StandardScaler().fit_transform(X)
model = TSNE(n_components=2, perplexity=30, learning_rate=200, random_state=0)
emb = model.fit_transform(X)
plt.figure(figsize=(8, 6))
plt.scatter(emb[:, 0], emb[:, 1], c=y, cmap="tab10", s=15)
plt.colorbar(label="digit")
plt.title("Embedding t-SNE untuk digit tulisan tangan")
plt.tight_layout()
plt.show()
3. Parameter utama #
perplexity: jumlah tetangga efektif (sekitar 5–50).learning_rate: pilih nilai 100–1000; terlalu kecil lambat, terlalu besar tidak stabil.n_iter: minimal 1000 iterasi plus faseearly_exaggeration.
4. Tips #
- Standarkan fitur dan buang duplikasi.
- Untuk dataset besar gunakan Barnes–Hut atau implementasi cepat seperti openTSNE/FIt-SNE.
- Jarak pada hasil bersifat kualitatif: hanya tetangga lokal yang terjaga.
5. Catatan #
- t-SNE cocok untuk eksplorasi visual, bukan transformasi yang bisa dievaluasi ulang pada data baru.
- Coba beberapa seed/perplexity untuk memastikan pola stabil.
- Pertimbangkan UMAP bila memerlukan kecepatan atau embedding yang bisa diaplikasikan ke sampel baru.