CodeBlanks Logo Icon CodeBlanks

Özellik seçimi

Ö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

model.py
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

model.py
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.

Soru
sec = VarianceThreshold(____=0.1)
Cevap
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

Başlangıç bölümündeki tüm dersler