CodeBlanks Logo Icon CodeBlanks

Avantajlar

Boyut indirgeme, aşırı öğrenmeyi azaltır ve model hızını artırır.

Avantajlar ve maliyet

Boyut indirgeme bir modeli hızlandırır ve bazen iyileştirir; ama bir bedeli vardır: bilgi kaybı ve yorumlanabilirliğin azalması. Kazancı ölçmenin yolu, aynı modeli indirgemeyle ve indirgemesiz karşılaştırmaktır:

for adim in ["passthrough", PCA(n_components=20)]:
    pipe = make_pipeline(StandardScaler(), adim, SVC())
    print(cross_val_score(pipe, X, y, cv=5).mean())

Başarı benzer, süre belirgin kısaysa indirgeme kazançlıdır.

Doğrusal olmayan alternatifler

PCA doğrusal olmayan yapıları kaçırır. KernelPCA çekirdek hilesiyle PCA'yı kıvrımlı yapılara genişletir ve transform sunar; bu yüzden model öncesi kullanılabilir:

from sklearn.decomposition import KernelPCA
kp = KernelPCA(n_components=2, kernel="rbf", gamma=10)
Z = kp.fit_transform(X_halka)   # iç içe halkaları ayırabilir

UMAP (ayrı bir kitaplık) t-SNE'ye benzer görseller üretir ama daha hızlıdır ve yeni veriye uygulanabilir.

Uygulama İç içe halkalar

make_circles verisinde PCA ve KernelPCA(kernel="rbf", gamma=10) ile iki bileşene indir. Her iki boyutlu gösterimde LogisticRegression()'ın 5 katlı CV doğruluğunu round(..., 3) ile aynı satırda yazdır (önce PCA).

Başlangıç kodu

model.py
from sklearn.datasets import make_circles
from sklearn.decomposition import PCA, KernelPCA
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score

X, y = make_circles(n_samples=400, factor=0.3, noise=0.05, random_state=0)

# buraya yaz

Örnek çözüm

model.py
from sklearn.datasets import make_circles
from sklearn.decomposition import PCA, KernelPCA
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score

X, y = make_circles(n_samples=400, factor=0.3, noise=0.05, random_state=0)

Zp = PCA(n_components=2).fit_transform(X)
Zk = KernelPCA(n_components=2, kernel="rbf", gamma=10).fit_transform(X)
m = LogisticRegression()
print(round(cross_val_score(m, Zp, y, cv=5).mean(), 3), round(cross_val_score(m, Zk, y, cv=5).mean(), 3))

Beklenen çıktı

0.435 1.0

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 İndirgeme sonrası CV skoru düşerse ne yapılmalıdır?

  • Daha çok bileşen tutmak ya da indirgemeyi kaldırmak Doğru cevap
  • Daha az bileşen tutmak
  • Test kümesine bakmak
  • Hiçbir şey

Açıklama: Düşüş, atılan bileşenlerin önemli bilgi taşıdığını gösterir.

2 Çekirdekli PCA kur.

Soru
kp = ____(n_components=2, kernel="rbf", gamma=10)
Cevap
kp = KernelPCA(n_components=2, kernel="rbf", gamma=10)

Açıklama: KernelPCA sklearn.decomposition içindedir.

3 Yöntemleri eşleştir.

Kavram Anlamı
PCA Doğrusal, transform var
KernelPCA Doğrusal değil, transform var
t-SNE Yalnızca görselleştirme
passthrough İndirgemesiz karşılaştırma

Orta seviye bölümündeki tüm dersler