Méthodes d'ensemble

S’entraîner aux questions d’entretien en Machine Learning avec Python

Lisa Stuart

Data Scientist

Techniques d'ensemble learning

  • Bootstrap Aggregation
  • Boosting
  • Empilement de modèles
S’entraîner aux questions d’entretien en Machine Learning avec Python

Mesure de l'erreur

S’entraîner aux questions d’entretien en Machine Learning avec Python

Arbres peu profonds

S’entraîner aux questions d’entretien en Machine Learning avec Python

Arbres profonds

S’entraîner aux questions d’entretien en Machine Learning avec Python

Arbres larges

S’entraîner aux questions d’entretien en Machine Learning avec Python

Modèle linéaire

S’entraîner aux questions d’entretien en Machine Learning avec Python

Biais

Hypothèse de relation linéaire (fausse)

  • Biais élevé
  • Sous-ajustement
  • Mauvaise généralisation
  • Plus de complexité ↓ biais
S’entraîner aux questions d’entretien en Machine Learning avec Python

Modèle complexe

S’entraîner aux questions d’entretien en Machine Learning avec Python

Variance

Modèles très complexes :

  • Forte variance
  • Surapprentissage
  • Mauvaise généralisation
S’entraîner aux questions d’entretien en Machine Learning avec Python

Compromis biais–variance

1 Source : Elements of Statistical Learning, Trevor Hastie, Robert Tibshirani et Jerome Friedman
S’entraîner aux questions d’entretien en Machine Learning avec Python

Bagging (Bootstrap aggregation)

  • Échantillons bootstrapés
    • Sous-ensemble tiré avec remise
    • La même ligne peut être choisie
  • Un modèle par échantillon
  • Moyenne des prédictions
  • Réduit la variance

1 https://medium.com/@rrfd/boosting-bagging-and-stacking-ensemble-methods-with-sklearn-and-mlens-a455c0c982de
S’entraîner aux questions d’entretien en Machine Learning avec Python

Boosting

  • Plusieurs modèles en séquence
  • Pondération des erreurs
  • Réduit le biais

1 https://blog.bigml.com/2017/03/14/introduction-to-boosted-trees/
S’entraîner aux questions d’entretien en Machine Learning avec Python

Empilement de modèles

  • Prédictions du Modèle 1
  • Prédictions du Modèle 2...
  • Prédictions du Modèle N
  • Empiler pour une précision maximale
    • Utilise les prédictions des modèles de base (Modèle N) comme entrée d'un modèle de niveau 2

1 http://supunsetunga.blogspot.com/
S’entraîner aux questions d’entretien en Machine Learning avec Python

Package 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
S’entraîner aux questions d’entretien en Machine Learning avec Python

Fonctions d'ensemble

Algorithme Fonction
Bootstrap aggregation sklearn.ensemble.BaggingClassifier()
Boosting sklearn.ensemble.AdaBoostClassifier()
XGBoost xgboost.XGBClassifier()
S’entraîner aux questions d’entretien en Machine Learning avec Python

Bagging vs boosting

Technique Biais Variance
Bootstrap aggregation (Bagging) Augmente Diminue
Boosting Diminue Augmente
S’entraîner aux questions d’entretien en Machine Learning avec Python

Principales techniques d'ensemble : QCM

Laquelle des affirmations suivantes est vraie à propos des trois principales techniques des méthodes d'ensemble en Machine Learning ? Sélectionnez l'affirmation vraie :

  • Les méthodes de boosting diminuent la variance du modèle.
  • Les méthodes de boosting augmentent les capacités prédictives d'un classifieur.
  • Le bootstrap aggregation, ou bagging, diminue le biais du modèle.
  • L'empilement de modèles combine les prédictions de modèles individuels pour créer un modèle plus précis.
S’entraîner aux questions d’entretien en Machine Learning avec Python

Principales techniques d'ensemble : réponse

Laquelle des affirmations suivantes est vraie à propos des trois principales techniques des méthodes d'ensemble en Machine Learning ? La bonne réponse est :

  • L'empilement de modèles combine les prédictions de modèles individuels pour créer un modèle plus précis. (Le modèle final issu des prédictions de plusieurs modèles individuels surpasse presque toujours chacun d'eux.)
S’entraîner aux questions d’entretien en Machine Learning avec Python

Principales techniques d'ensemble : réponses incorrectes

Laquelle des affirmations suivantes est vraie à propos des trois principales techniques des méthodes d'ensemble en Machine Learning ?

  • Les méthodes de boosting diminuent la variance du modèle. (Le boosting diminue le biais, ce qui, en parallèle, peut augmenter la variance pour atteindre le point d'équilibre d'une meilleure généralisation.)
  • Les méthodes de boosting augmentent les capacités prédictives d'un classifieur. (Le boosting diminue le biais ; les capacités prédictives peuvent ou non s'en trouver accrues.)
  • Le bootstrap aggregation, ou bagging, diminue le biais du modèle. (Le bagging diminue la variance.)
S’entraîner aux questions d’entretien en Machine Learning avec Python

Passons à la pratique !

S’entraîner aux questions d’entretien en Machine Learning avec Python

Preparing Video For Download...