Accueil / Factory / Algos ML / AdaBoost — factory / algos ML / apprentissage supervisé

ADA BOOST.

AdaBoost, pour Adaptive Boosting, est le premier algorithme de boosting à succès, proposé par Yoav Freund et Robert Schapire en 1995. Il enchaîne des modèles très simples, souvent des arbres à une seule question, en donnant plus de poids aux exemples mal classés à chaque étape. Il reste une bonne porte d'entrée vers le gradient boosting.

ClassificationEnsemble / boostingDonnées tabulairesSouches de décisionNiveau : intermédiaire

FICHE D'IDENTITÉ

notes sur 5 · usage entreprise
PerformanceBien au-dessus de ses modèles faibles, sous XGBoost en général
InterprétabilitéDes centaines de souches pondérées, importance des variables seulement
VitesseModèles entraînés en série, donc non parallélisables
Facilité de réglageNombre de modèles et taux d'apprentissage à ajuster ensemble
Tolérance aux données brutesPas de mise à l'échelle, mais sensible aux étiquettes erronées
EN 30 SECONDES

Un élève qui révise en reprenant d'abord les exercices qu'il a ratés, encore et encore, jusqu'à ne plus buter sur les mêmes.

1. On entraîne un modèle faible

Une souche : un arbre qui ne pose qu'une question, par exemple « plus de 3 appels au support ? ». À peine mieux que le hasard, mais rapide.

2. On repondère les exemples

Les clients mal classés voient leur poids augmenter, les bien classés leur poids baisser. Le modèle suivant se concentre donc sur les cas difficiles.

3. On combine avec des votes pondérés

Chaque modèle reçoit un poids selon sa précision. La prédiction finale est un vote pondéré de tous les modèles.

LE CAS MÉTIER

rétention client · télécom / énergie / abonnements
EN ENTRÉE

Une ligne par client

Ancienneté, appels au support, montant mensuel, contrat, incidents récents, et le départ observé. L'objectif : cibler une campagne de rétention sur les clients les plus à risque.

EN SORTIE

Un score qui dépasse de loin chaque souche

Sur le jeu d'exemple, une souche seule atteint une AUC de 0,63 ; 200 souches boostées montent à 0,76. Dans les 10 % de clients les mieux scorés, 59 % partent, contre 22 % en moyenne.

CE QU'ON MESURE

Le taux de partants dans le top du score

La campagne ne peut appeler qu'une partie de la base. On mesure la part de vrais partants parmi les clients ciblés, comparée au taux moyen : c'est le lift, ici proche de 2,7.

QUAND LE SORTIR, QUAND L'ÉVITER

OUI

  • Classification binaire sur données tabulaires de taille moyenne
  • Comprendre le principe du boosting avant de passer à XGBoost
  • Données propres, aux étiquettes fiables
  • Besoin d'un modèle correct avec peu de réglages

NON

  • Étiquettes bruitées ou erronées : AdaBoost s'acharne sur elles, préférer une Random Forest
  • Recherche de la meilleure performance : XGBoost ou LightGBM font mieux
  • Très gros volumes : l'entraînement en série devient long
  • Décision à justifier ligne à ligne : préférer une régression logistique
LES 3 RÉGLAGES QUI COMPTENT

Noms donnés pour R (adabag) et Python (scikit-learn).

mfinal / n_estimators

Nombre de modèles faibles. Plus il y en a, plus le modèle s'adapte aux données ; au-delà d'un certain point, il surapprend. À régler avec le taux d'apprentissage.

learning_rate / coeflearn

En Python, learning_rate réduit la contribution de chaque modèle : plus petit, il faut plus de modèles, avec souvent un meilleur résultat. En R, coeflearn choisit la formule de pondération ("Freund" pour l'AdaBoost d'origine).

Profondeur du modèle faible : maxdepth / max_depth

1 par défaut en Python (souche). En R, adabag construit par défaut des arbres rpart profonds : il faut fixer maxdepth = 1 pour obtenir des souches. Des arbres de profondeur 2 ou 3 captent des interactions entre variables, au prix d'un risque de surapprentissage plus élevé.

LE CODE MINIMAL

jeu d'exemple : clients_churn.csv ↓
# Ciblage anti-churn : AdaBoost en R
library(rpart)
library(adabag)

clients <- read.csv("clients_churn.csv")
clients$churn <- factor(clients$churn)
clients$contrat <- factor(clients$contrat)

set.seed(42)
idx <- sample(nrow(clients), round(0.7 * nrow(clients)))
train <- clients[idx, ]
test <- clients[-idx, ]

# 200 souches (arbres à une seule question) entraînées en série ;
# coeflearn = "Freund" : pondération d'origine d'AdaBoost
modele <- boosting(churn ~ anciennete + appels_support + montant + contrat + incidents_3m,
                   data = train, mfinal = 200, coeflearn = "Freund",
                   control = rpart.control(maxdepth = 1))
proba <- predict(modele, newdata = test)$prob[, 2]

# Part de partants dans les 10 % de clients les mieux scorés
top <- proba >= quantile(proba, 0.9)
cat("Churn top 10 % :", round(mean(test$churn[top] == "1"), 2), "\n")
cat("Churn moyen    :", round(mean(test$churn == "1"), 2), "\n")
print(round(sort(modele$importance, decreasing = TRUE), 1))

QUESTIONS FRÉQUENTES

Quelle différence entre AdaBoost et gradient boosting ?

AdaBoost repondère les exemples mal classés à chaque étape. Le gradient boosting ajuste chaque nouveau modèle sur les erreurs résiduelles du précédent, en suivant le gradient d'une fonction de perte. AdaBoost est un cas particulier de gradient boosting avec une perte exponentielle.

Qu'est-ce qu'une souche de décision ?

Un arbre de décision réduit à une seule question, avec deux feuilles. Seule, elle prédit mal ; c'est justement le modèle faible idéal pour AdaBoost, qui en combine des centaines.

Pourquoi AdaBoost est-il sensible au bruit ?

Parce qu'il augmente sans cesse le poids des exemples mal classés. Un client mal étiqueté, que personne ne peut bien classer, finit par peser très lourd et par déformer les modèles suivants. Les versions modernes du boosting sont plus robustes à ce problème.

LES ALGOS VOISINS

à comparer avant de choisir
la généralisation

Gradient Boosting

Corrige les erreurs par descente de gradient sur une fonction de perte au choix. Plus souple, plus performant.

Voir la fiche →
le boosting moderne

XGBoost

Gradient boosting optimisé et régularisé. La référence actuelle sur données tabulaires.

Voir la fiche →
l'approche inverse

Bagging

Des modèles indépendants entraînés en parallèle puis moyennés. Réduit la variance plutôt que le biais.

Voir la fiche →
— formation

Passer de la fiche à la pratique

Dataistudio forme les équipes au machine learning et à l'IA, sur des cas concrets.

Voir les formations →