Özet - Ensemble
- Makine Öğrenmesi kursu
- Orta seviye
- Ders 102/112
- 6 dk
Bu grupta voting, bagging, boosting ve stacking'i öğrendin.
Özet: topluluklar
Bu grupta:
- Topluluk, farklı hatalar yapan modelleri birleştirir; çeşitlilik şarttır.
VotingClassifier: sert (çoğunluk) ve yumuşak (olasılık ortalaması),weights.BaggingClassifier: kararsız modellerin varyansını azaltır.- Boosting sapmayı azaltır; stump'larda bagging değil boosting işe yarar.
StackingClassifier: katman dışı tahminlerle üst model.
Topluluklar genellikle bir-iki puan kazandırır ama daha yavaş ve daha zor yorumlanır; bu bedele değip değmediği probleme bağlıdır.
Uygulama Toplulukları karşılaştır
Üç tek modeli, yumuşak VotingClassifier'ı ve StackingClassifier'ı (üst model lojistik, cv=5) 5 katlı CV ile karşılaştır. Her satırda adı ve ortalamayı round(..., 3) ile yazdır (sırayla: lr, knn, agac, oylama, yigin).
Başlangıç kodu
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier
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.3, random_state=2, stratify=y)
modeller = [("lr", make_pipeline(StandardScaler(), LogisticRegression())), ("knn", make_pipeline(StandardScaler(), KNeighborsClassifier())), ("agac", DecisionTreeClassifier(max_depth=4, random_state=0))]
from sklearn.ensemble import VotingClassifier, StackingClassifier
from sklearn.model_selection import cross_val_score
# buraya yazÖrnek çözüm
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier
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.3, random_state=2, stratify=y)
modeller = [("lr", make_pipeline(StandardScaler(), LogisticRegression())), ("knn", make_pipeline(StandardScaler(), KNeighborsClassifier())), ("agac", DecisionTreeClassifier(max_depth=4, random_state=0))]
from sklearn.ensemble import VotingClassifier, StackingClassifier
from sklearn.model_selection import cross_val_score
aday = modeller + [("oylama", VotingClassifier(modeller, voting="soft")), ("yigin", StackingClassifier(modeller, final_estimator=LogisticRegression(), cv=5))]
for ad, m in aday:
print(ad, round(cross_val_score(m, X, y, cv=5).mean(), 3))Beklenen çıktı
lr 0.981 knn 0.965 agac 0.916 oylama 0.958 yigin 0.977
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Yumuşak oylama için hangisi gereklidir?
- Tüm modellerin aynı tür olması
- Tek sayıda model
- Ölçeklenmemiş veri
- Tüm modellerin predict_proba sunması Doğru cevap
Açıklama: Olasılık ortalaması için her modelin olasılık üretmesi gerekir.
2 Üst modelin özgün özellikleri de görmesini sağla.
st = StackingClassifier(modeller, final_estimator=LogisticRegression(), ____=True)
st = StackingClassifier(modeller, final_estimator=LogisticRegression(), passthrough=True)
Açıklama: passthrough=True özgün X'i temel tahminlerin yanına ekler.
3 Araçları eşleştir.
| Kavram | Anlamı |
|---|---|
VotingClassifier |
Oylama |
BaggingClassifier |
Bootstrap kopyaları |
AdaBoostClassifier |
Sıralı ağırlıklandırma |
StackingClassifier |
Üst model |