Metodi ensemble

Esercitarsi con le domande di colloquio di Machine Learning in Python

Lisa Stuart

Data Scientist

Tecniche di ensemble learning

  • Bootstrap Aggregation
  • Boosting
  • Stacking di modelli
Esercitarsi con le domande di colloquio di Machine Learning in Python

Misura dell’errore

Esercitarsi con le domande di colloquio di Machine Learning in Python

Alberi bassi

Esercitarsi con le domande di colloquio di Machine Learning in Python

Alberi alti

Esercitarsi con le domande di colloquio di Machine Learning in Python

Alberi larghi

Esercitarsi con le domande di colloquio di Machine Learning in Python

Modello lineare

Esercitarsi con le domande di colloquio di Machine Learning in Python

Bias

Assunzione di relazione lineare (errata)

  • Bias alto
  • Underfitting
  • Scarsa generalizzazione
  • Aumentare la complessità riduce il bias
Esercitarsi con le domande di colloquio di Machine Learning in Python

Modello complesso

Esercitarsi con le domande di colloquio di Machine Learning in Python

Varianza

Modelli molto complessi:

  • Varianza alta
  • Overfitting
  • Scarsa generalizzazione
Esercitarsi con le domande di colloquio di Machine Learning in Python

Trade-off Bias-Varianza

1 Fonte: The Elements of Statistical Learning di Trevor Hastie, Robert Tibshirani e Jerome Friedman
Esercitarsi con le domande di colloquio di Machine Learning in Python

Bagging (Bootstrap aggregation)

  • Campioni bootstrappati
    • Sottoinsiemi con ripetizione
    • La stessa riga può essere scelta
  • Modello per ogni campione
  • Media delle uscite
  • Riduce la varianza

1 https://medium.com/@rrfd/boosting-bagging-and-stacking-ensemble-methods-with-sklearn-and-mlens-a455c0c982de
Esercitarsi con le domande di colloquio di Machine Learning in Python

Boosting

  • Più modelli in sequenza
  • Gli errori ricevono più peso
  • Riduce il bias

1 https://blog.bigml.com/2017/03/14/introduction-to-boosted-trees/
Esercitarsi con le domande di colloquio di Machine Learning in Python

Model stacking

  • Predizioni Modello 1
  • Predizioni Modello 2...
  • Predizioni Modello N
  • Stack per il modello più accurato
    • Usa le predizioni dei modelli base (Modello N) come input al modello di 2° livello

1 http://supunsetunga.blogspot.com/
Esercitarsi con le domande di colloquio di Machine Learning in Python

Pacchetto Vecstack

# import modules
from sklearn.ensemble import BaggingClassifier
from sklearn.ensemble import AdaBoostClassifier
from xgboost import XGBClassifier
from vecstack import stacking

# Create list: stacked_models
stacked_models = [BaggingClassifier(n_estimators=25, random_state=123), AdaBoostClassifier(n_estimators=25, random_state=123)]

# Stack the models: stack_train, stack_test
stack_train, stack_test = stacking(stacked_models, X_train, y_train, X_test, regression=False, mode='oof_pred_bag', 
                                   needs_proba=False, metric=accuracy_score, n_folds=4, stratified=True, shuffle=True, random_state=0, verbose=2)

# Initialize and fit 2nd level model
final_model = XGBClassifier(random_state=123, n_jobs=-1, learning_rate=0.1, n_estimators=10, max_depth=3)
final_model_fit = final_model.fit(stack_train, y_train)

# Predict: stacked_pred
stacked_pred = final_model.predict(stack_test)

# Final prediction score
print('Final prediction score: [%.8f]' % accuracy_score(y_test, stacked_pred))
1 https://towardsdatascience.com/automate-stacking-in-python-fc3e7834772e
Esercitarsi con le domande di colloquio di Machine Learning in Python

Funzioni per ensemble

Algoritmo Funzione
Bootstrap aggregation sklearn.ensemble.BaggingClassifier()
Boosting sklearn.ensemble.AdaBoostClassifier()
XGBoost xgboost.XGBClassifier()
Esercitarsi con le domande di colloquio di Machine Learning in Python

Bagging vs boosting

Tecnica Bias Varianza
Bootstrap aggregation (Bagging) Aumenta Diminuisce
Boosting Diminuisce Aumenta
Esercitarsi con le domande di colloquio di Machine Learning in Python

Principali tecniche ensemble - MCQ

Quale delle seguenti affermazioni sui tre principali metodi ensemble nel Machine Learning è vera? Seleziona quella vera:

  • I metodi di boosting riducono la varianza del modello.
  • I metodi di boosting aumentano la capacità predittiva di un classificatore.
  • Il bagging (bootstrap aggregation) riduce il bias del modello.
  • Lo stacking combina le predizioni dei singoli modelli per ottenere un modello più accurato.
Esercitarsi con le domande di colloquio di Machine Learning in Python

Principali tecniche ensemble: risposta

Quale delle seguenti affermazioni sui tre principali metodi ensemble nel Machine Learning è vera? La risposta corretta è:

  • Lo stacking combina le predizioni dei singoli modelli per ottenere un modello più accurato. (Il modello finale ottenuto dalle predizioni di più modelli quasi sempre supera i singoli.)
Esercitarsi con le domande di colloquio di Machine Learning in Python

Principali tecniche ensemble: risposte errate

Quale delle seguenti affermazioni sui tre principali metodi ensemble nel Machine Learning è vera?

  • I metodi di boosting riducono la varianza del modello. (Il boosting riduce il bias e, allo stesso tempo, può aumentare la varianza per trovare il punto ottimale di generalizzazione.)
  • I metodi di boosting aumentano la capacità predittiva di un classificatore. (Il boosting riduce il bias; le prestazioni predittive possono o meno aumentare.)
  • Il bagging (bootstrap aggregation) riduce il bias del modello. (Il bagging riduce la varianza.)
Esercitarsi con le domande di colloquio di Machine Learning in Python

Alleniamoci!

Esercitarsi con le domande di colloquio di Machine Learning in Python

Preparing Video For Download...