Accueil / Factory / Algos ML / Gradient Boosting — factory / algos ML / apprentissage supervisé

GRADIENT BOOSTING.

Des centaines de petits arbres de décision ajoutés l'un après l'autre, chacun chargé de corriger l'erreur laissée par les précédents. C'est le principe derrière XGBoost, LightGBM et CatBoost, et la méthode qui gagne le plus souvent sur les données en tableau.

ClassificationRégressionDonnées tabulairesEnsemble / boostingNiveau : intermédiaire

FICHE D'IDENTITÉ

notes sur 5 · usage entreprise
PerformanceLa référence sur données tabulaires quand il est bien réglé
InterprétabilitéImportance des variables et SHAP, pas de règle lisible
VitesseArbres construits en série, non parallélisables entre eux
Facilité de réglageTaux d'apprentissage, nombre d'arbres et profondeur à régler
Tolérance aux données brutesPas de normalisation ; manquants gérés par gbm et HistGradientBoosting
EN 30 SECONDES

Un tireur vise une cible, puis un deuxième tire en corrigeant l'écart du premier, un troisième corrige ce qui reste. Au bout de 300 tirs correctifs, on est très près du centre.

1. On part d'une prévision simple

Le modèle commence par une valeur unique pour tout le monde : la fréquence moyenne de sinistres, par exemple. L'écart entre cette prévision et la réalité est l'erreur à corriger.

2. Un petit arbre apprend l'erreur restante

À chaque tour, un arbre de quelques feuilles cherche où la prévision se trompe le plus : les jeunes conducteurs, les grosses cylindrées. Techniquement, il suit le gradient de la perte, d'où le nom.

3. On ajoute une fraction de sa correction

La correction est multipliée par un petit pas d'apprentissage (0,05 par exemple) avant d'être ajoutée. On répète des centaines de fois et on s'arrête quand l'erreur sur des données de validation ne baisse plus.

LE CAS MÉTIER

tarification · assurance auto / IARD
EN ENTRÉE

Un contrat par ligne

Âge du conducteur, puissance du véhicule, zone d'habitation, coefficient bonus-malus, durée d'exposition dans l'année. Et la colonne à prédire : le nombre de sinistres déclarés.

EN SORTIE

Une fréquence annuelle par contrat

Le modèle prédit un nombre de sinistres par année d'assurance, avec une perte de Poisson adaptée aux comptages. Sur le jeu d'exemple, il retrouve seul l'essentiel de la sur-sinistralité des moins de 25 ans, que le GLM à effet d'âge linéaire sous-estime de moitié.

CE QU'ON MESURE

La déviance, puis les écarts par segment

La déviance de Poisson compare les prévisions aux sinistres réels. Ici, elle n'est qu'à peine meilleure que celle du GLM : le gain se voit surtout sur les segments mal captés, d'où le tableau observé / prédit par tranche d'âge.

QUAND LE SORTIR, QUAND L'ÉVITER

OUI

  • Données en tableau où la performance compte plus que la lisibilité
  • Effets à seuil et interactions que l'on ne sait pas écrire à la main
  • Cible particulière : comptage (Poisson), montant, quantile, classement
  • Challenger d'un modèle linéaire en place, pour mesurer ce qu'il rate

NON

  • Tarif ou score à justifier coefficient par coefficient : garder un GLM, éventuellement enrichi des effets trouvés par le boosting
  • Moins de quelques centaines de lignes : une régression régularisée est plus stable
  • Gros volumes et temps de calcul serré : passer à LightGBM ou XGBoost
  • Images, texte, son : c'est le terrain du deep learning
LES 4 RÉGLAGES QUI COMPTENT

Ils fonctionnent ensemble : un pas plus petit demande plus d'arbres. Noms donnés pour R (gbm) et Python (scikit-learn).

shrinkage / learning_rate

Le pas d'apprentissage. 0,1 par défaut ; en le descendant vers 0,01, le modèle gagne souvent en précision mais demande plus d'arbres. C'est le premier réglage à fixer.

n.trees / max_iter

Le nombre d'arbres. Trop d'arbres mène au surapprentissage. On le choisit par validation croisée (gbm.perf en R) ou par arrêt précoce (early_stopping en Python).

interaction.depth / max_leaf_nodes

La taille de chaque arbre. De petits arbres (2 à 8 feuilles) suffisent en général. Des arbres plus grands captent des interactions plus complexes et surapprennent plus vite.

distribution / loss

La fonction de perte, à choisir selon la cible : bernoulli ou log_loss pour oui / non, poisson pour un comptage, gaussian ou squared_error pour un montant. En Python, la perte Poisson est disponible dans HistGradientBoostingRegressor.

LE CODE MINIMAL

jeu d'exemple : sinistres.csv ↓
# Fréquence de sinistres auto : Gradient Boosting en R
library(gbm)

contrats <- read.csv("sinistres.csv")
contrats$zone <- factor(contrats$zone)

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

# offset(log(exposition)) : un contrat vu 6 mois compte pour une demi-année
modele <- gbm(nb_sinistres ~ offset(log(exposition)) + age_conducteur + puissance_cv + zone + bonus_malus,
              data = train, distribution = "poisson", n.trees = 1000, interaction.depth = 2,
              shrinkage = 0.01, n.minobsinnode = 50, bag.fraction = 0.8, cv.folds = 5)

# Nombre d'arbres retenu par validation croisée
n_opt <- gbm.perf(modele, method = "cv", plot.it = FALSE)
cat("Arbres retenus :", n_opt, "\n")

# predict() ignore l'offset : il renvoie une fréquence par année d'assurance
test$freq <- predict(modele, test, n.trees = n_opt, type = "response")
tranche <- cut(test$age_conducteur, c(17, 24, 45, 65, 85))
observee <- tapply(test$nb_sinistres, tranche, sum) / tapply(test$exposition, tranche, sum)
predite <- tapply(test$freq * test$exposition, tranche, sum) / tapply(test$exposition, tranche, sum)
print(round(cbind(observee, predite), 3))
print(summary(modele, n.trees = n_opt, plotit = FALSE))

QUESTIONS FRÉQUENTES

Quelle différence entre Gradient Boosting et Random Forest ?

La Random Forest entraîne des arbres profonds indépendamment et fait la moyenne de leurs votes. Le Gradient Boosting entraîne de petits arbres l'un après l'autre, chacun corrigeant l'erreur des précédents. Le boosting est souvent plus précis, mais plus sensible aux réglages et au surapprentissage.

Quelle différence entre Gradient Boosting et XGBoost ?

XGBoost est une implémentation du Gradient Boosting. Elle ajoute une régularisation des feuilles, une gestion native des valeurs manquantes et un calcul parallélisé à l'intérieur de chaque arbre. LightGBM et CatBoost sont d'autres implémentations du même principe.

Le Gradient Boosting surapprend-il ?

Oui, si on ajoute trop d'arbres ou des arbres trop profonds : l'erreur d'apprentissage continue de baisser alors que l'erreur sur de nouvelles données remonte. On s'en protège avec un petit pas d'apprentissage, un tirage partiel des lignes à chaque arbre et un arrêt fixé par validation croisée.

LES ALGOS VOISINS

à comparer avant de choisir
la version optimisée

XGBoost

Même principe, avec régularisation, gestion des manquants et calcul parallèle. Le choix par défaut en production.

Voir la fiche →
plus simple à régler

Random Forest

Des arbres indépendants qui votent. Un peu moins précis, mais solide dès les réglages par défaut.

Voir la fiche →
la référence actuarielle

Régression de Poisson

Un GLM qui prédit un nombre d'événements. Moins précis, mais chaque coefficient se lit et se justifie.

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 →