PCA vs t-SNE
- Makine Öğrenmesi kursu
- Orta seviye
- Ders 77/112
- 5 dk
PCA doğrusal, t-SNE doğrusal olmayan boyut indirgeme yöntemidir.
PCA ve t-SNE
t-SNE, yüksek boyutta yakın olan noktaları 2 boyutta da yakın tutmaya çalışan doğrusal olmayan bir yöntemdir. Yerel komşulukları korur; bu yüzden kümeler görsel olarak çok net ayrılır:
from sklearn.manifold import TSNE
Z = TSNE(n_components=2, perplexity=30, random_state=0).fit_transform(X)Farklar: PCA doğrusal, hızlı ve deterministiktir, yeni veriye transform uygulanabilir. t-SNE doğrusal değil, yavaştır, rastgeledir ve transform yöntemi yoktur.
t-SNE grafiğini okumak
t-SNE grafiğinde dikkatli olunmalıdır:
- Küme boyutları anlamsızdır; yoğun kümeler genişleyebilir.
- Kümeler arası mesafeler güvenilir değildir.
perplexitysonucu çok değiştirir (5-50 arası denenir).- Farklı
random_statefarklı yerleşim verir.
Güvenilir olan tek şey yerel komşuluktur: grafikte yan yana olan noktalar özgün uzayda da yakındır.
Uygulama Komşulukların korunması
Rakam verisinin ilk 500 örneğini PCA (2 bileşen) ve t-SNE (perplexity=30, random_state=0) ile 2 boyuta indir. Her iki 2 boyutlu gösterimde 5 komşulu KNN'in 5 katlı CV doğruluğunu round(..., 3) ile aynı satırda yazdır (önce PCA). Bu, yerel komşulukların ne kadar korunduğunu ölçer.
Başlangıç kodu
import numpy as np
from sklearn.datasets import load_digits
X, y = load_digits(return_X_y=True)
from sklearn.decomposition import PCA
from sklearn.manifold import TSNE
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import cross_val_score
X, y = X[:500], y[:500]
# buraya yazÖrnek çözüm
import numpy as np
from sklearn.datasets import load_digits
X, y = load_digits(return_X_y=True)
from sklearn.decomposition import PCA
from sklearn.manifold import TSNE
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import cross_val_score
X, y = X[:500], y[:500]
Zp = PCA(n_components=2).fit_transform(X)
Zt = TSNE(n_components=2, perplexity=30, random_state=0).fit_transform(X)
knn = KNeighborsClassifier(n_neighbors=5)
print(round(cross_val_score(knn, Zp, y, cv=5).mean(), 3), round(cross_val_score(knn, Zt, y, cv=5).mean(), 3))Beklenen çıktı
0.682 0.952
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Neden t-SNE çıktısı bir sınıflandırıcıya girdi olarak kullanılmaz?
- Hep 3 boyut üretir
- Kullanılır
- Yeni veriye uygulanamaz ve mesafeleri bozar Doğru cevap
- Çok doğrudur
Açıklama: t-SNE görselleştirme aracıdır; transform yoktur ve küme arası uzaklıklar anlamlı değildir.
2 t-SNE için komşuluk ölçeğini ayarla.
Z = TSNE(n_components=2, ____=30, random_state=0).fit_transform(X)
Z = TSNE(n_components=2, perplexity=30, random_state=0).fit_transform(X)
Açıklama: perplexity kabaca her noktanın dikkate aldığı komşu sayısıdır.
3 Özellikleri eşleştir.
| Kavram | Anlamı |
|---|---|
PCA |
Doğrusal, hızlı |
t-SNE |
Doğrusal değil, yerel |
transform |
Yalnızca PCA'da |
perplexity |
t-SNE komşuluk ölçeği |