Makine Öğrenmesi
Ensemble
Ensemble yöntemi, birden çok modelin tahminlerini birleştirir.
Topluluk fikri
Bağımsız hatalar yapan zayıf tahmincilerin çoğunluk oyu, tek bir tahminciden daha isabetlidir. Her biri %60 doğru olan 25 bağımsız sınıflandırıcının çoğunluğu %84 civarında doğrudur:
from scipy.stats import binom
print(1 - binom.cdf(12, 25, 0.6)) # 13 ya da daha fazla doğru oy: ~0.85
Anahtar kelime bağımsız: hepsi aynı hatayı yaparsa oylama hiçbir şey kazandırmaz. Random forest'teki rastgelelik bu bağımsızlığı artırmak içindir.
Sınıflandırma ve regresyonda birleştirme
scikit-learn'ün RandomForestClassifier'ı sert oy yerine ağaçların olasılıklarının ortalamasını alır (yumuşak oylama). RandomForestRegressor ağaç tahminlerinin ortalamasını verir:
import numpy as np
ort = np.mean([t.predict_proba(X_test[:1]) for t in rf.estimators_], axis=0)
print(np.allclose(ort, rf.predict_proba(X_test[:1]))) # True
Ormanın olasılıkları ağaç olasılıklarının tam ortalamasıdır.
Uygulama Orman = ağaç ortalaması
Eğitilmiş ormanın her ağacının ilk test örneği için predict_proba çıktısının ortalamasını hesapla. Bunun rf.predict_proba ile aynı olduğunu np.allclose ile yazdır. Ardından ilk test örneğine sınıf 1 diyen ağaç sayısını 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
X, y = load_breast_cancer(return_X_y=True)
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=50, random_state=0).fit(X_train, y_train)
x = X_test[:1]
ort = np.mean([t.predict_proba(x) for t in rf.estimators_], axis=0)
print(np.allclose(ort, rf.predict_proba(x)))
print(sum(int(t.predict(x)[0] == 1) for t in rf.estimators_))
Kendini test et
-
Oylama ne zaman en az kazanç sağlar?
- Model sayısı çokken
- Her model %50'den iyiyken
- Tüm modeller aynı hataları yaptığında
- Modeller bağımsızken
Cevabı göster
Tüm modeller aynı hataları yaptığında — İlişkili hatalar oylamayla düzelmez; çeşitlilik gerekir.
-
Ağaç olasılıklarının ortalamasını al.
ort = np.____([t.predict_proba(x) for t in rf.estimators_], axis=0)
Cevabı göster
ort = np.mean([t.predict_proba(x) for t in rf.estimators_], axis=0)
-
Birleştirme biçimlerini eşleştir.
- sert oylama
- Çoğunluk sınıfı
- yumuşak oylama
- Olasılık ortalaması
- regresyon ormanı
- Tahmin ortalaması
- bağımsız hatalar
- Oylamanın gücü
Sıradaki ders: n_estimators