Neden indirgeriz?
- Makine Öğrenmesi kursu
- Orta seviye
- Ders 76/112
- 5 dk
Boyut indirgeme, hesaplama maliyetini azaltır ve gürültüyü filtreler.
Neden indirgeriz?
Başlıca nedenler:
- Hız ve bellek: daha az sütun, daha hızlı eğitim.
- Gürültü azaltma: küçük varyanslı bileşenler çoğu zaman gürültüdür.
- Görselleştirme: 2-3 boyuta inince veri çizilebilir.
- Boyutun laneti: çok boyutta noktalar birbirinden neredeyse eşit uzaklaşır; mesafe tabanlı yöntemler zayıflar.
rng = np.random.default_rng(0)
for d in [2, 100, 1000]:
A = rng.random((200, d))
m = np.linalg.norm(A[1:] - A[0], axis=1)
print(d, round(m.min() / m.max(), 2)) # 1'e yaklaştıkça "en yakın" anlamsızlaşırGürültü giderme
Az bileşenle indirip geri dönmek, veriyi en güçlü desenlere yansıtır; küçük varyanslı bileşenlerdeki gürültü atılır:
gurultulu = X + rng.normal(0, 4, X.shape)
pca = PCA(n_components=0.5).fit(gurultulu)
temiz = pca.inverse_transform(pca.transform(gurultulu))
print(((temiz - X) ** 2).mean() < ((gurultulu - X) ** 2).mean()) # TrueÇok az bileşen tutulursa gürültüyle birlikte gerçek ayrıntılar da kaybolur; denge yine doğrulamayla bulunur.
Uygulama Gürültüyü temizle
Rakam verisine rng.normal(0, 4, X.shape) gürültüsü ekle. Gürültülü veriye varyansın %50'sini koruyan PCA uydurup geri döndür. Gürültülü ve temizlenmiş verinin özgün veriye ortalama kare hatasını round(..., 2) ile aynı satırda yazdır.
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
rng = np.random.default_rng(0)
# 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
rng = np.random.default_rng(0)
gurultulu = X + rng.normal(0, 4, X.shape)
pca = PCA(n_components=0.5).fit(gurultulu)
temiz = pca.inverse_transform(pca.transform(gurultulu))
print(round(((gurultulu - X) ** 2).mean(), 2), round(((temiz - X) ** 2).mean(), 2))Beklenen çıktı
16.01 7.22
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Boyutun lanetinde en yakın ve en uzak komşu mesafelerinin oranı nasıl değişir?
- 0'a yaklaşır
- Değişmez
- Negatif olur
- 1'e yaklaşır Doğru cevap
Açıklama: Tüm noktalar benzer uzaklıkta olunca "en yakın" komşu bilgisi değersizleşir.
2 Her satırın ilk noktaya uzaklığını hesapla.
m = np.linalg.norm(A[1:] - A[0], ____=1)
m = np.linalg.norm(A[1:] - A[0], axis=1)
Açıklama: axis=1 her satır için ayrı bir norm verir.
3 Nedenleri eşleştir.
| Kavram | Anlamı |
|---|---|
Hız |
Daha az sütun |
Gürültü |
Küçük bileşenleri at |
Görselleştirme |
2-3 boyut |
Boyutun laneti |
Mesafeler eşitlenir |