XGBoost

XGBoost (Extreme Gradient Boosting) est une méthode de gradient boosting sur arbres de décision. Contrairement au bagging de Random Forest, les arbres sont entraînés séquentiellement : chaque nouvel arbre corrige une partie des erreurs du modèle courant.

Intuition

L'idée n'est pas de moyenner des arbres indépendants, mais de construire un ensemble additif :

  • un premier arbre capture un signal grossier ;
  • les arbres suivants apprennent les erreurs résiduelles ;
  • la somme des arbres produit une fonction plus expressive qu'un arbre seul.

XGBoost ajoute à ce schéma une régularisation explicite, une gestion efficace des données tabulaires et des optimisations d'entraînement qui en font une référence pratique sur beaucoup de problèmes supervisés structurés.

Fonctionnement

  1. Initialisation : partir d'une prédiction constante (moyenne en régression, log-odds en classification).

  2. Calcul du gradient : à chaque itération, mesurer dans quelle direction la loss doit être corrigée.

  3. Arbre faible : entraîner un petit arbre sur ces gradients / pseudo-résidus.

  4. Mise à jour additive : ajouter cet arbre à l'ensemble avec un poids contrôlé par learning_rate.

  5. Répétition : continuer jusqu'à atteindre n_estimators ou un critère d'arrêt, idéalement avec early_stopping.

En pratique, XGBoost optimise une objective de la forme :

  • loss d'ajustement (erreur de prédiction),
  • complexité des arbres (profondeur, nombre de feuilles),
  • shrinkage via learning_rate.

Cette combinaison explique pourquoi XGBoost peut atteindre de très bonnes performances, mais aussi pourquoi il demande plus de tuning qu'une forêt aléatoire.

Hyperparamètres clés

ParamètreRôleEffet principal
n_estimatorsNombre d'arbres ajoutés

Plus grand = plus expressif, mais plus lent et plus risqué sans early stopping

learning_ratePoids de chaque arbre

Plus petit = apprentissage plus stable, souvent besoin de plus d'arbres

max_depthProfondeur maximaleContrôle la complexité locale et le sur-apprentissage
min_child_weightTaille / poids minimum d'un nœud enfantFreine les splits trop spécifiques
subsampleSous-échantillonnage des lignesRéduit variance et coût ; trop bas peut introduire du bruit
colsample_bytreeSous-échantillonnage des variablesDécorrèle partiellement les arbres et régularise
reg_alpha

Pénalisation

Favorise des contributions plus parcimonieuses
reg_lambda

Pénalisation

Stabilise les poids et limite les extrêmes
gammaGain minimal requis pour splitterEmpêche les divisions peu utiles

Forces et limites

Forces

  • Très performant sur données tabulaires structurées
  • Capture non-linéarités et interactions complexes
  • Régularisation riche et contrôle fin du compromis biais-variance
  • Gère bien les features hétérogènes et les relations peu spécifiées
  • Souvent meilleur que Random Forest en performance brute

Limites

  • Plus sensible au tuning et au sur-apprentissage
  • Moins simple à expliquer et à stabiliser qu'une baseline linéaire ou une forêt
  • Peut mal se comporter si la validation est mal construite
  • Temps d'entraînement plus élevé, surtout avec recherche d'hyperparamètres
  • Comme les autres modèles tabulaires, ne corrige pas à lui seul le concept drift ou le non-iid

Comparaison avec les modèles voisins

ModèlePrincipevs XGBoost
Random ForestBagging d'arbres indépendants

Plus robuste et plus simple ; souvent moins performant mais moins exigeant en tuning

LightGBMBoosting histogram-based orienté vitesse

Souvent plus rapide sur gros jeux tabulaires ; comportement différent sur petites données

CatBoostBoosting optimisé pour variables catégorielles

Souvent plus naturel si beaucoup de catégories et moins d'encodage manuel

Régression / logistiqueBaseline linéaireMoins expressive, mais plus interprétable et plus stable

Évaluation et réglage

ÉtapeRecommandation
Découpage des données

Train / validation / test ; en temporel : validation walk-forward ou purged CV — voir validation croisée

Point de départ

Commencer par learning_rate, n_estimators, max_depth, puis affiner subsample et colsample_bytree

Early stoppingPratiquement indispensable pour éviter d'ajouter trop d'arbres
Métriques

Classification : log loss, ROC AUC, PR AUC, F1 selon le problème ; régression : RMSE, MAE

Risque principal

Sur-réglage sur le set de validation ou fuite d'information si les splits sont mal conçus

Importance des variables

MéthodePrincipeLimites
GainContribution moyenne d'une variable à la réduction de la lossPeut survaloriser certaines variables corrélées
Cover / weightFréquence ou couverture des splits impliquant la variableMoins informatif sur l'impact réel sur la performance
PermutationBaisse de performance après permutation aléatoirePlus coûteux, mais souvent plus robuste
SHAPDécomposition locale des contributions de chaque feature

Lecture plus riche ; voir ML appliqué aux marchés

Applications

Je mettrai des exemples concrets et précis à l'avenir.

Références

• XGBoost documentation — documentation générale

• XGBoost Python API —

XGBClassifier

,

XGBRegressor

• cuML FIL — Forest Inference Library pour l'inférence GPU de modèles entraînés avec XGBoost