Ensemble
- Makine Öğrenmesi kursu
- Orta seviye
- Ders 36/112
- 5 dk
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.85Anahtar 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]))) # TrueOrmanı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.
Başlangıç kodu
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)
# buraya yazÖrnek çözüm
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_))Beklenen çıktı
True 48
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Oylama ne zaman en az kazanç sağlar?
- Model sayısı çokken
- Her model %50'den iyiyken
- Tüm modeller aynı hataları yaptığında Doğru cevap
- Modeller bağımsızken
Açıklama: İlişkili hatalar oylamayla düzelmez; çeşitlilik gerekir.
2 Ağaç olasılıklarının ortalamasını al.
ort = np.____([t.predict_proba(x) for t in rf.estimators_], axis=0)
ort = np.mean([t.predict_proba(x) for t in rf.estimators_], axis=0)
Açıklama: Orman, ağaçların olasılık ortalamasını kullanır.
3 Birleştirme biçimlerini eşleştir.
| Kavram | Anlamı |
|---|---|
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ü |