Accéder au contenu principal

Qu'est-ce que le bagging dans l'apprentissage automatique ? Un guide avec des exemples

Ce tutoriel a fourni une vue d'ensemble de la méthode d'ensemble bagging en apprentissage automatique, y compris son fonctionnement, sa mise en œuvre en Python, sa comparaison avec le boosting, ses avantages et ses meilleures pratiques.
Actualisé 16 janv. 2025  · 10 min de lecture

Les méthodes d'ensemble sont des techniques puissantes d'apprentissage automatique qui combinent plusieurs modèles pour améliorer la précision globale de la prédiction et la stabilité du modèle. L'agrégation Bootstrap, mieux connue sous le nom de Bagging, est une méthode d'ensemble populaire et largement mise en œuvre.

Dans ce tutoriel, nous allons nous intéresser de plus près à l'ensachage, à son fonctionnement et à ses avantages. Nous la comparerons à une autre méthode d'ensemble (Boosting) et étudierons un exemple de bagging en Python. À la fin, vous aurez une solide compréhension de l'ensachage, y compris des meilleures pratiques.

Comprendre l'apprentissage d'ensemble

La modélisation d'ensemble est une technique qui combine plusieurs modèles d'apprentissage automatique afin d'améliorer les performances prédictives globales. L'idée de base est qu'un groupe d'apprenants faibles peut se réunir pour former un apprenant fort.

Un modèle d'ensemble se compose généralement de deux étapes :

  1. Plusieurs modèles d'apprentissage automatique sont formés indépendamment.
  2. Leurs prédictions sont agrégées d'une manière ou d'une autre, par exemple par un vote, une moyenne ou une pondération. Cet ensemble est ensuite utilisé pour établir la prédiction globale.

Image par l'auteur

Les ensembles ont tendance à donner de meilleurs résultats parce que les différents modèles se complètent et surmontent leurs faiblesses individuelles. Ils réduisent également la variance et empêchent l'ajustement excessif.

Les méthodes d'ensemble les plus répandues sont l'ensachage, l'augmentation et l'empilage. L'apprentissage d'ensemble est largement utilisé dans les tâches d'apprentissage automatique telles que la classification, la régression et le regroupement afin d'améliorer la précision et la robustesse.

Qu'est-ce que l'ensachage ?

L'agrégation (bootstrap) est une méthode d'ensemble qui consiste à former plusieurs modèles indépendamment sur des sous-ensembles aléatoires de données et à agréger leurs prédictions par le biais d'un vote ou d'un calcul de moyenne.

Image par l'auteur

En détail, chaque modèle est formé sur un sous-ensemble aléatoire de données échantillonnées avec remplacement, ce qui signifie que les points de données individuels peuvent être choisis plus d'une fois. Ce sous-ensemble aléatoire est appelé échantillon bootstrap. En entraînant les modèles sur différents bootstraps, le bagging réduit la variance des modèles individuels. Il évite également le surajustement en exposant les modèles constitutifs à différentes parties de l'ensemble de données.

Les prédictions de tous les modèles échantillonnés sont ensuite combinées par une simple moyenne pour obtenir la prédiction globale. De cette manière, le modèle agrégé intègre les points forts des modèles individuels et annule leurs erreurs.

Le bagging est particulièrement efficace pour réduire la variance et le surajustement, ce qui rend le modèle plus robuste et plus précis, en particulier dans les cas où les modèles individuels sont sujets à une forte variabilité.

L'ensachage contre l'ensachage. Renforcer l'efficacité

La méthode Boosting est une autre méthode d'ensemble populaire qui est souvent comparée à la méthode Bagging. La principale différence réside dans la manière dont les modèles constitutifs sont formés.

Dans le cas du bagging, les modèles sont formés indépendamment en parallèle sur différents sous-ensembles aléatoires des données. Alors que dans le cas du boosting, les modèles sont formés de manière séquentielle, chaque modèle apprenant à partir des erreurs du modèle précédent. En outre, le bagging implique généralement une simple moyenne des modèles, tandis que le boosting attribue des poids en fonction de la précision.

Image par l'auteur

Le bagging réduit la variance tandis que le boosting réduit le biais. Le bagging peut être utilisé avec des modèles instables tels que les arbres de décision, tandis que le boosting fonctionne mieux avec des modèles stables tels que la régression linéaire.

Les deux méthodes ont leurs forces et leurs faiblesses. Le bagging est plus simple à exécuter en parallèle, tandis que le boosting peut être plus puissant et plus précis. Dans la pratique, il est utile de tester les deux sur un nouveau problème pour voir lequel est le plus performant.

Avantages de l'ensachage

Voici les principaux avantages de l'ensachage :

  1. Réduit le surajustement : Il peut réduire le risque de surajustement du modèle, ce qui permet d'améliorer la précision du modèle sur des données inédites.
  2. Diminue la cariance du modèle : Plusieurs modèles formés sur différents sous-ensembles de données établissent une moyenne de leurs prédictions, ce qui réduit la variance par rapport à un modèle unique.
  3. Améliore la stabilité : Les changements dans l'ensemble de données d'apprentissage ont moins d'impact sur les modèles en sac, ce qui rend le modèle global plus stable.
  4. Gère une grande variabilité : Particulièrement efficace pour les algorithmes tels que les arbres de décision, qui ont tendance à avoir une variance élevée.
  5. Calcul parallélisable : Chaque modèle de l'ensemble peut être formé indépendamment, ce qui permet un traitement parallèle et une utilisation efficace des ressources informatiques.
  6. Facile à comprendre et à mettre en œuvre : Le concept de l'ensachage est simple et peut être mis en œuvre sans modification complexe de l'algorithme d'apprentissage.
  7. Bon pour les données bruyantes : Le processus de calcul de la moyenne permet de réduire le bruit dans la prédiction finale.
  8. Traite les données déséquilibrées : L'agrégation peut être utile dans les scénarios où l'ensemble de données est déséquilibré, en améliorant les performances du modèle dans de telles situations.

Bagging en Python : Un bref tutoriel

Dans ce tutoriel Python, nous allons entraîner un modèle de classification par arbre de décision sur un ensemble de données de désabonnement des clients des télécommunications et utiliser la méthode d'ensemble de bagging pour améliorer les performances. Nous utiliserons DataLab pour obtenir l'ensemble de données et exécuter notre code. Le code est également disponible dans ce classeur DataLab, que vous pouvez copier pour l'exécuter dans votre navigateur sans rien installer.

Ensemble de données

L'ensemble de données sur le renouvellement des clients des télécommunications provient d'une entreprise de télécommunications iranienne. Chaque ligne de l'ensemble de données correspond à l'activité d'un client au cours d'une année, y compris des informations sur les échecs d'appel, la durée de l'abonnement et une étiquette de désabonnement qui indique si le client a quitté le service.

Tout d'abord, nous allons charger l'ensemble de données et afficher les 5 premières lignes.

import pandas as pd

customer = pd.read_csv("data/customer_churn.csv")
customer.head()

Visualisation de l'ensemble de données

Ensuite, nous créerons des variables indépendantes (X) et dépendantes (y). Ensuite, nous divisons l'ensemble de données en sous-ensembles de formation et de test.

X = customer.drop("Churn", axis=1)
y = customer.Churn

# Split into train and test 
from sklearn.model_selection import train_test_split, cross_val_score
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1)

Entraîner un modèle d'apprentissage automatique

Nous allons créer un pipeline d'apprentissage automatique simple et y intégrer un ensemble de données d'entraînement. Le pipeline normalise les données avant d'alimenter le classificateur à arbre de décision.

from sklearn.tree import DecisionTreeClassifier
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline

pipeline = Pipeline([
    ('scaler', StandardScaler()),
    ('classifier', DecisionTreeClassifier(random_state=42))
])

pipeline.fit(X_train, y_train)

Diagramme de la canalisation 1

Suivez le cours Machine Learning with Tree-Based Models in Python pour apprendre à utiliser des modèles arborescents et des ensembles pour la régression et la classification avec scikit-learn.

Évaluation du modèle

Nous évaluerons un modèle d'arbre de décision afin de le comparer au modèle d'ensemble.

Nous produirons des rapports de classification en faisant des prédictions sur une feuille de données de test.

from sklearn.metrics import classification_report

# Make prediction on the testing data
y_pred = pipeline.predict(X_test)

# Classification Report
print(classification_report(y_pred, y_test))

Notre modèle a obtenu une précision de 96 % et un rappel de 97 % pour la classe majoritaire "0", mais ses performances ont été médiocres pour la classe minoritaire "1".

Résultats des performances du modèle

Afin de mieux comprendre les performances du modèle, nous procéderons à une validation croisée et calculerons les scores correspondants.

# Evaluate the classifier using cross-validation
cv_scores = cross_val_score(pipeline, X, y, cv=5)

print(f"Cross-validation scores: {cv_scores}")
print(f"Mean CV accuracy: {np.mean(cv_scores):.2f}")

Les scores varient fortement, avec des maxima de 95 % et des minima de 92 %.

Cross-validation scores: [0.95079365 0.94126984 0.93492063 0.94285714 0.92222222]
Mean CV accuracy: 0.94

Classificateur à sac

Maintenant, créons un classificateur de bagging en utilisant un estimateur de base comme notre pipeline (scalaire + classificateur d'arbre de décision) et entraînons-le sur un ensemble de données d'entraînement.

Nous pouvons améliorer la performance du modèle en augmentant n_estimators, mais 50 est suffisant pour les résultats de base.

from sklearn.ensemble import BaggingClassifier

# Create a bagging classifier with the decision tree pipeline
bagging_classifier = BaggingClassifier(base_estimator=pipeline, n_estimators=50, random_state=42)

# Train the bagging classifier on the training data
bagging_classifier.fit(X_train, y_train)

Diagramme du pipeline BaggingClassifier

Évaluation du modèle d'ensemble

Nous allons évaluer les résultats du modèle d'ensemble et les comparer aux performances du modèle unique. Pour cela, nous allons générer des rapports de classification sur un ensemble de données de test.

# Make prediction on the testing data
y_pred = bagging_classifier.predict(X_test)

# Classification Report
print(classification_report(y_pred, y_test))

Comme vous pouvez le constater, nous avons comparativement amélioré la performance du modèle. La précision et le rappel pour la classe minoritaire sont passés respectivement de 79 % à 80 % et de 77 % à 82 %. Cela représente une amélioration significative.

Résultats des performances du modèle

Calculons maintenant le score de validation croisée.

# Evaluate the classifier using cross-validation
cv_scores = cross_val_score(bagging_classifier, X, y, cv=5)

print(f"Cross-validation scores: {cv_scores}")
print(f"Mean CV accuracy: {np.mean(cv_scores):.2f}")

Nos scores de validation croisée présentent une faible variance, comprise entre 94 % et 96 %. La précision globale du modèle est également passée de 94 % à 95 %.

Cross-validation scores: [0.95396825 0.95714286 0.94126984 0.96190476 0.95714286]
Mean CV accuracy: 0.95

La technique du bagging est un outil utile dans les applications d'apprentissage automatique pour améliorer la précision et la stabilité des modèles.

Apprenez les techniques d'ensemble telles que le bagging, le boosting et le stacking pour construire des modèles d'apprentissage automatique avancés et efficaces en Python avec le cours Méthodes d'ensemble en Python.

Meilleures pratiques et conseils

Lorsque vous utilisez le bagging dans l'apprentissage automatique, vous pouvez maximiser son efficacité en suivant les meilleures pratiques et les conseils :

  1. Utilisez le bagging lorsque vous avez des modèles à haute variance tels que les arbres de décision afin d'améliorer la stabilité.
  2. Combinez le bagging avec la validation croisée pour une évaluation plus fiable de vos modèles.
  3. Utilisez les forêts aléatoires (arbres de décision ensachés) comme technique d'ensachage puissante et prête à l'emploi.
  4. Fixez une valeur plus élevée pourn_estimators (100-200 par exemple) lors de l'ensachage afin d'en tirer le meilleur parti.
  5. Le bagging est facilement parallélisé à l'aide de n_jobs. Mettez-le en œuvre sur plusieurs unités centrales/machines pour une formation plus rapide.
  6. Étant donné que le bagging repose sur l'échantillonnage bootstrap, veillez à ce que chaque modèle soit formé sur un sous-ensemble de données suffisamment diversifié.
  7. Avant de procéder à l'agrégation, optimisez les performances de chaque modèle à l'aide de GridSearchCV. Une bonne performance des modèles individuels se traduit généralement par une meilleure performance de l'ensemble.

Lisez les meilleures pratiques MLOps (Machine Learning Operations) pour apprendre les pratiques MLOps réussies pour un déploiement fiable et évolutif des systèmes d'apprentissage automatique.

Conclusion

Dans ce tutoriel, nous avons exploré le bagging, une puissante technique d'apprentissage automatique d'ensemble. L'agrégation de plusieurs modèles permet d'améliorer les performances prédictives globales. Nous l'avons comparée au boosting et avons découvert ses avantages par rapport à l'utilisation d'un modèle unique.

Au final, nous avons mis en œuvre un classificateur de bagging en Python sur un jeu de données de churn de télécoms. L'ensemble d'arbres de décision a amélioré la précision et la performance des classes minoritaires par rapport à un seul arbre de décision. En outre, nous avons appris de précieux conseils et astuces pour maximiser l'efficacité du bagging dans l'apprentissage automatique.

Si vous souhaitez poursuivre une carrière en tant qu'ingénieur professionnel en apprentissage automatique, commencez par vous inscrire au cursus Machine Learning Scientist with Python. Vous apprendrez à former des modèles supervisés, non supervisés et d'apprentissage profond à l'aide du langage de programmation Python.


Abid Ali Awan's photo
Author
Abid Ali Awan
LinkedIn
Twitter

En tant que data scientist certifié, je suis passionné par l'utilisation des technologies de pointe pour créer des applications innovantes d'apprentissage automatique. Avec une solide expérience en reconnaissance vocale, en analyse de données et en reporting, en MLOps, en IA conversationnelle et en NLP, j'ai affiné mes compétences dans le développement de systèmes intelligents qui peuvent avoir un impact réel. En plus de mon expertise technique, je suis également un communicateur compétent, doué pour distiller des concepts complexes dans un langage clair et concis. En conséquence, je suis devenu un blogueur recherché dans le domaine de la science des données, partageant mes idées et mes expériences avec une communauté grandissante de professionnels des données. Actuellement, je me concentre sur la création et l'édition de contenu, en travaillant avec de grands modèles linguistiques pour développer un contenu puissant et attrayant qui peut aider les entreprises et les particuliers à tirer le meilleur parti de leurs données.

Sujets

Commencez dès aujourd'hui votre voyage dans le domaine de l'apprentissage automatique !

cours

Preprocessing for Machine Learning in Python

4 hr
52.8K
Learn how to clean and prepare your data for machine learning!
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow
Apparenté

blog

Les 32 meilleures questions d'entretien sur AWS et leurs réponses pour 2024

Un guide complet pour explorer les questions d'entretien AWS de base, intermédiaires et avancées, ainsi que des questions basées sur des situations réelles. Il couvre tous les domaines, garantissant ainsi une stratégie de préparation bien équilibrée.
Zoumana Keita 's photo

Zoumana Keita

30 min

blog

Les 20 meilleures questions d'entretien pour les flocons de neige, à tous les niveaux

Vous êtes actuellement à la recherche d'un emploi qui utilise Snowflake ? Préparez-vous à répondre à ces 20 questions d'entretien sur le flocon de neige pour décrocher le poste !
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

20 min

blog

2022-2023 Rapport annuel DataCamp Classrooms

À l'aube de la nouvelle année scolaire, DataCamp Classrooms est plus motivé que jamais pour démocratiser l'apprentissage des données, avec plus de 7 650 nouveaux Classrooms ajoutés au cours des 12 derniers mois.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 min

blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates a offert plus de 20k bourses d'études à nos partenaires à but non lucratif au deuxième trimestre 2023. Découvrez comment des apprenants défavorisés et assidus ont transformé ces opportunités en réussites professionnelles qui ont changé leur vie.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

blog

Célébration de Saghar Hazinyar : Une boursière de DataCamp Donates et une diplômée de Code to Inspire

Découvrez le parcours inspirant de Saghar Hazinyar, diplômée de Code to Inspire, qui a surmonté les défis en Afghanistan et s'est épanouie grâce à une bourse de DataCamp Donates.
Fereshteh Forough's photo

Fereshteh Forough

4 min

blog

Nous avons fait don de bourses DataCamp Premium à un million de personnes, et ce n'est pas fini.

Réparties entre nos deux programmes d'impact social, DataCamp Classrooms et #DCDonates, les bourses offrent un accès illimité à tout ce que DataCamp Premium a à offrir.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

Voir plusVoir plus