Makine Öğrenmesi
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).
Örnek çözümü göster
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))
Kendini test et
-
İndirgeme sonrası CV skoru düşerse ne yapılmalıdır?
- Daha çok bileşen tutmak ya da indirgemeyi kaldırmak
- Daha az bileşen tutmak
- Test kümesine bakmak
- Hiçbir şey
Cevabı göster
Daha çok bileşen tutmak ya da indirgemeyi kaldırmak — Düşüş, atılan bileşenlerin önemli bilgi taşıdığını gösterir.
-
Çekirdekli PCA kur.
kp = ____(n_components=2, kernel="rbf", gamma=10)
Cevabı göster
kp = KernelPCA(n_components=2, kernel="rbf", gamma=10)
-
Yöntemleri eşleştir.
- 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
Sıradaki ders: Özet - Boyut indirgeme