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

STACKING DE MODÈLES.

Plusieurs modèles différents prédisent la même chose, puis un dernier modèle apprend à combiner leurs prédictions. Le méta-modèle découvre à quel modèle se fier et dans quelle mesure. C'est la technique des compétitions de data science pour gagner les derniers points de performance.

ClassificationRégressionEnsemble / stackingMéta-modèleNiveau : avancé

FICHE D'IDENTITÉ

notes sur 5 · usage entreprise
PerformanceEn général au niveau du meilleur modèle, rarement beaucoup plus
InterprétabilitéUne couche de plus au-dessus de modèles déjà peu lisibles
VitesseChaque modèle entraîné plusieurs fois par validation croisée
Facilité de réglageChoix des modèles de base et du méta-modèle à faire
Tolérance aux données brutesHérite des exigences de chaque modèle de base
EN 30 SECONDES

Un directeur commercial consulte trois analystes avant chaque prévision. Avec le temps, il apprend que l'un est fiable sur les petits clients, l'autre sur les grands comptes, et pondère leurs avis en conséquence.

1. On entraîne des modèles de base variés

Par exemple une régression logistique, une Random Forest et un boosting. Ils doivent être différents : trois modèles qui font les mêmes erreurs n'apportent rien à combiner.

2. On produit des prédictions hors échantillon

Par validation croisée, chaque client reçoit une prédiction de chaque modèle faite sans l'avoir vu. Sans cette précaution, le méta-modèle apprendrait à faire confiance au modèle qui a le mieux récité ses données d'entraînement.

3. Un méta-modèle apprend la combinaison

Une régression logistique, en général, prend ces prédictions en entrée et la vraie réponse en sortie. Ses coefficients disent quel poids donner à chaque modèle de base.

LE CAS MÉTIER

churn · télécom / énergie / assurance
EN ENTRÉE

Trois modèles de churn déjà construits

Les données clients habituelles : ancienneté, appels au support, montant, contrat, incidents. L'équipe dispose déjà d'une régression logistique, d'une forêt aléatoire et d'un boosting, qui ne classent pas les clients tout à fait de la même façon.

EN SORTIE

Un score unique qui combine les trois

Chaque client reçoit une probabilité de départ issue du méta-modèle. Ses poids indiquent la contribution de chaque modèle : dans la version Python, la logistique et le boosting pèsent plus que la forêt.

CE QU'ON MESURE

Le gain d'AUC, à mettre face à la complexité

Sur le jeu d'exemple, l'AUC du stacking (0,759) égale à peine la régression logistique seule (0,758). Un gain de cette taille ne justifie pas trois modèles à maintenir. Le stacking paie quand les modèles de base sont bons et vraiment différents.

QUAND LE SORTIR, QUAND L'ÉVITER

OUI

  • Compétition ou enjeu où chaque point de performance vaut de l'argent
  • Plusieurs bons modèles existent déjà et se trompent sur des clients différents
  • Sources de données distinctes (comportement, texte, historique) traitées par des modèles séparés
  • Équipe outillée pour maintenir plusieurs modèles en production

NON

  • Modèle à expliquer à un régulateur ou à un client : un modèle unique et lisible
  • Modèles de base très corrélés : aucun gain, préférer le meilleur seul
  • Peu de données : le méta-modèle ajoute du surapprentissage, un simple vote suffit
  • Contrainte de latence ou de coût de maintenance : un XGBoost bien réglé fait souvent presque aussi bien
LES 4 CHOIX QUI COMPTENT

Le stacking a peu de paramètres propres, mais chaque choix de conception pèse. Noms donnés pour R (SuperLearner) et Python (StackingClassifier).

SL.library / estimators

Les modèles de base. Mieux vaut trois modèles de natures différentes (linéaire, forêt, boosting) que cinq variantes du même. En R, chaque modèle est une fonction « SL.* » ; create.Learner en crée des variantes réglées.

cvControl / cv

Le nombre de plis de la validation croisée qui produit les prédictions hors échantillon, 5 en général. C'est la garantie que le méta-modèle ne voit pas des prédictions trop optimistes.

method / final_estimator

Le méta-modèle. SuperLearner calcule par défaut des poids positifs qui somment à 1 (méthode NNLS). scikit-learn utilise par défaut une régression logistique. Un méta-modèle simple limite le surapprentissage.

passthrough (Python)

Donne aussi les variables d'origine au méta-modèle, en plus des prédictions. Rarement utile, sauf si l'efficacité de chaque modèle dépend clairement d'un segment de clients.

LE CODE MINIMAL

jeu d'exemple : clients_churn.csv ↓
# Churn clients : Stacking en R
library(SuperLearner)

clients <- read.csv("clients_churn.csv")
X <- data.frame(model.matrix(~ anciennete + appels_support + montant + contrat + incidents_3m,
                             data = clients)[, -1])
y <- clients$churn

set.seed(42)
idx <- sample(nrow(X), round(0.7 * nrow(X)))

# Boosting raccourci : 500 arbres au lieu des 10 000 prévus par défaut dans SL.gbm
gbm_court <- create.Learner("SL.gbm", params = list(gbm.trees = 500, shrinkage = 0.05))

# Trois modèles de base ; leurs poids sont appris sur des prédictions hors échantillon (5 plis)
sl <- SuperLearner(Y = y[idx], X = X[idx, ], family = binomial(),
                   SL.library = c("SL.glm", "SL.ranger", gbm_court$names), cvControl = list(V = 5))
print(sl)   # risque en validation croisée et poids de chaque modèle

# AUC sur les clients jamais vus (formule des rangs) : chaque modèle, puis la combinaison
pred <- predict(sl, X[-idx, ])
auc <- function(p, yy) (sum(rank(p)[yy == 1]) - sum(yy == 1) * (sum(yy == 1) + 1) / 2) /
  (sum(yy == 1) * sum(yy == 0))
print(round(apply(pred$library.predict, 2, auc, yy = y[-idx]), 3))
cat("AUC stacking :", round(auc(pred$pred[, 1], y[-idx]), 3), "\n")

QUESTIONS FRÉQUENTES

Quelle différence entre stacking, bagging et boosting ?

Le bagging entraîne le même modèle sur des tirages différents et fait la moyenne. Le boosting enchaîne des modèles qui corrigent les erreurs des précédents. Le stacking combine des modèles de natures différentes grâce à un méta-modèle entraîné sur leurs prédictions.

Pourquoi faut-il une validation croisée dans le stacking ?

Si le méta-modèle apprend sur des prédictions faites sur les données d'entraînement, il favorise le modèle qui les a le mieux mémorisées, souvent une forêt très profonde. La validation croisée produit pour chaque ligne une prédiction faite sans l'avoir vue, comme en production.

Le stacking vaut-il le coup en entreprise ?

Rarement comme premier réflexe. Le gain est souvent de quelques millièmes d'AUC, pour plusieurs modèles à surveiller et réentraîner. Il se justifie quand ce gain a une valeur chiffrée claire, par exemple sur un score qui pilote des millions d'euros de décisions.

LES ALGOS VOISINS

à comparer avant de choisir
la version simple

Voting

Fait voter les modèles à égalité, sans méta-modèle. Moins de risque de surapprentissage, souvent presque aussi bon.

Voir la fiche →
l'ingrédient clé

Validation croisée

C'est elle qui fournit des prédictions honnêtes au méta-modèle. Sans elle, le stacking surapprend.

Voir la fiche →
le méta-modèle usuel

Régression logistique

Souvent utilisée au second étage : ses coefficients se lisent comme des poids donnés à chaque modèle.

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 →