Özellik seçimi
- Makine Öğrenmesi kursu
- Başlangıç
- Ders 82/112
- 5 dk
Özellik seçimi, en bilgilendirici özellikleri seçerek modeli basitleştirir.
Neden özellik seçilir?
Her özellik yararlı değildir. Gereksiz özellikler modeli yavaşlatır, gürültüyü öğrenmeye iter ve yorumlamayı zorlaştırır. Az ama iyi özellikle kurulan model çoğu zaman daha iyi genelleşir.
from sklearn.feature_selection import VarianceThreshold
X = np.array([[1, 0, 3], [2, 0, 1], [3, 0, 2]])
print(VarianceThreshold(0.0).fit_transform(X)) # sabit 2. sütun atıldıEn basit seçim, hiç değişmeyen (varyansı 0) sütunları atmaktır.
Korelasyonla filtreleme
Hedefle hiç ilişkisi olmayan özellikler ve birbirinin neredeyse kopyası olan özellikler aday elemelerdir:
r = [abs(np.corrcoef(X[:, j], y)[0, 1]) for j in range(X.shape[1])]
print(np.round(r, 2)) # hedefle ilişki gücü
print(np.corrcoef(X, rowvar=False).round(2)) # özellikler arasıKorelasyon yalnızca doğrusal ilişkiyi ölçer; ileri seviyede model tabanlı seçim yöntemlerini göreceksin.
Uygulama Hedefle ilişki
Her sütunun y ile korelasyonunun mutlak değerini bir liste olarak hesapla ve np.round(..., 2) ile yazdır. Ardından en güçlü ilişkili sütunun indeksini yazdır.
Başlangıç kodu
import numpy as np
X = np.array([[1, 5, 2], [2, 3, 2], [3, 6, 2.1], [4, 2, 1.9], [5, 4, 2]])
y = np.array([2, 4, 6, 8, 10])
# buraya yazÖrnek çözüm
import numpy as np
X = np.array([[1, 5, 2], [2, 3, 2], [3, 6, 2.1], [4, 2, 1.9], [5, 4, 2]])
y = np.array([2, 4, 6, 8, 10])
r = [abs(np.corrcoef(X[:, j], y)[0, 1]) for j in range(X.shape[1])]
print(np.round(r, 2))
print(int(np.argmax(r)))Beklenen çıktı
[1. 0.3 0.22] 0
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Gereksiz özelliklerin en olası zararı nedir?
- Daha iyi genelleme
- Eğitimin hızlanması
- Zararı yoktur
- Modelin gürültüyü öğrenip aşırı uyması Doğru cevap
Açıklama: Özellik sayısı arttıkça rastlantısal desenler bulma şansı da artar.
2 Varyansı 0.1'den küçük sütunları at.
sec = VarianceThreshold(____=0.1)
sec = VarianceThreshold(threshold=0.1)
Açıklama: threshold altında varyanslı özellikler atılır.
3 Durumları eşleştir.
| Kavram | Anlamı |
|---|---|
Sabit sütun |
Varyans eşiğiyle at |
Hedefle ilişkisiz |
Korelasyonla ele |
İki sütun kopya |
Birini at |
Az iyi özellik |
Daha iyi genelleme |