CodeBlanks Logo Icon CodeBlanks

Özellik seçimi nedir?

Özellik seçimi, en bilgilendirici özellikleri seçerek modeli basitleştirir.

Özellik seçimi nedir?

Özellik seçimi, modelin başarısına katkı vermeyen sütunları atıp yararlı olanları tutar. PCA'dan farkı, sonucun özgün ve yorumlanabilir sütunlardan oluşmasıdır. Üç yaklaşım vardır:

  • Filtre: model bağımsız istatistik (varyans, korelasyon, F testi).
  • Sarmalayıcı (wrapper): bir modeli tekrar tekrar eğiterek alt küme arar (RFE).
  • Gömülü: modelin kendi önemleri (Lasso katsayıları, ağaç önemleri).

Yapay deneme verisi

Seçim yöntemlerini sınamak için hangi sütunların yararlı olduğunu bildiğimiz veri idealdir. make_classification, shuffle=False ile yararlı sütunları başa koyar:

X, y = make_classification(n_samples=400, n_features=20, n_informative=4,
                           n_redundant=2, shuffle=False, random_state=0)
# sütun 0-3: bilgili, 4-5: bilgilinin doğrusal birleşimi, 6-19: gürültü

İyi bir seçim yöntemi ilk 6 sütunu seçmeli, kalan 14 gürültü sütununu atmalıdır.

Uygulama Gürültünün zararı

KNN (5 komşu, ölçekli) için yalnızca ilk 6 sütunla ve tüm 20 sütunla 5 katlı CV doğruluğunu hesapla. İki skoru round(..., 3) ile aynı satırda yazdır (önce 6 sütun).

Başlangıç kodu

model.py
import numpy as np
from sklearn.datasets import make_classification

X, y = make_classification(n_samples=400, n_features=20, n_informative=4, n_redundant=2, shuffle=False, random_state=0)
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import cross_val_score

# buraya yaz

Örnek çözüm

model.py
import numpy as np
from sklearn.datasets import make_classification

X, y = make_classification(n_samples=400, n_features=20, n_informative=4, n_redundant=2, shuffle=False, random_state=0)
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import cross_val_score

m = make_pipeline(StandardScaler(), KNeighborsClassifier(n_neighbors=5))
print(round(cross_val_score(m, X[:, :6], y, cv=5).mean(), 3), round(cross_val_score(m, X, y, cv=5).mean(), 3))

Beklenen çıktı

0.878 0.688

Soru ve cevaplar

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

1 Hangisi bir sarmalayıcı (wrapper) yöntemdir?

  • Korelasyon filtresi
  • PCA
  • Recursive feature elimination Doğru cevap
  • Varyans eşiği

Açıklama: RFE seçim için modeli tekrar tekrar eğitir.

2 Bilgili özellik sayısını 4 yap.

Soru
X, y = make_classification(n_features=20, ____=4, random_state=0)
Cevap
X, y = make_classification(n_features=20, n_informative=4, random_state=0)

Açıklama: n_informative sınıfı gerçekten belirleyen sütun sayısıdır.

3 Yaklaşımları eşleştir.

Kavram Anlamı
filtre Model bağımsız istatistik
sarmalayıcı Tekrarlı model eğitimi
gömülü Modelin kendi önemi
n_redundant Tekrar eden bilgi

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