Makine Öğrenmesi
Feature importance
Random forest, özellik önem derecesini hesaplar.
Özellik önemi (safsızlık)
feature_importances_, her özelliğin tüm ağaçlardaki bölmelerde safsızlığı ne kadar azalttığının ortalamasıdır. Hızlıdır ama iki zayıflığı vardır: çok farklı değerli (yüksek kardinaliteli) özellikleri kayırır ve eğitim verisine dayanır.
d = load_breast_cancer()
rf.fit(d.data, d.target)
sira = np.argsort(rf.feature_importances_)[::-1][:3]
for i in sira:
print(d.feature_names[i], round(rf.feature_importances_[i], 3))
Önemler toplamı 1'dir; ilişkili özellikler önemi aralarında paylaşır.
Permütasyon önemi
Daha güvenilir yöntem: bir sütunun değerlerini karıştırıp (ilişkisini bozup) test skorunun ne kadar düştüğüne bakmak. Düşüş büyükse model o özelliğe gerçekten dayanıyordur:
from sklearn.inspection import permutation_importance
r = permutation_importance(rf, X_test, y_test, n_repeats=10, random_state=0)
print(r.importances_mean.round(3))
Test verisinde hesaplandığı için ezberlenmiş gürültüyü önemli göstermez; her model türüyle çalışır.
Uygulama Gürültü sütunu
Veriye rastgele sayılardan oluşan bir sütun ekle (son sütun). Orman eğit; gürültü sütununun safsızlık önemini ve permütasyon önemini (n_repeats=5, random_state=0, test verisinde) round(..., 3) ile aynı satırda yazdır.
Örnek çözümü göster
import numpy as np
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.inspection import permutation_importance
X, y = load_breast_cancer(return_X_y=True)
rng = np.random.default_rng(0)
X = np.column_stack([X[:, :5], rng.random(len(X))])
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0, stratify=y)
rf = RandomForestClassifier(n_estimators=200, random_state=0).fit(X_train, y_train)
r = permutation_importance(rf, X_test, y_test, n_repeats=5, random_state=0)
print(round(rf.feature_importances_[-1], 3), round(r.importances_mean[-1], 3))
Kendini test et
-
Rastgele kimlik numarası gibi çok farklı değerli anlamsız bir sütun safsızlık önemini nasıl etkiler?
- Önemi hep sıfır olur
- Hata verir
- Diğer önemleri artırır
- Yapay olarak yüksek önem alabilir
Cevabı göster
Yapay olarak yüksek önem alabilir — Çok değerli sütun ağaçlara çok sayıda bölme fırsatı verir; eğitimde gürültüyü ayırır.
-
Permütasyon önemini hesapla.
r = ____(rf, X_test, y_test, n_repeats=10, random_state=0)
Cevabı göster
r = permutation_importance(rf, X_test, y_test, n_repeats=10, random_state=0)
-
Yöntemleri eşleştir.
- feature_importances_
- Safsızlık azalması
- permutation_importance
- Karıştırınca skor düşüşü
- yüksek kardinalite
- Safsızlık önemini şişirir
- test verisi
- Permütasyonun güvencesi
Sıradaki ders: Özet - Random forest