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
Initialisation : partir d'une prédiction constante (moyenne en régression, log-odds en classification).
Calcul du gradient : à chaque itération, mesurer dans quelle direction la loss doit être corrigée.
Arbre faible : entraîner un petit arbre sur ces gradients / pseudo-résidus.
Mise à jour additive : ajouter cet arbre à l'ensemble avec un poids contrôlé par
learning_rate.Répétition : continuer jusqu'à atteindre
n_estimatorsou un critère d'arrêt, idéalement avecearly_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ètre | Rôle | Effet principal |
|---|---|---|
n_estimators | Nombre d'arbres ajoutés | Plus grand = plus expressif, mais plus lent et plus risqué sans early stopping |
learning_rate | Poids de chaque arbre | Plus petit = apprentissage plus stable, souvent besoin de plus d'arbres |
max_depth | Profondeur maximale | Contrôle la complexité locale et le sur-apprentissage |
min_child_weight | Taille / poids minimum d'un nœud enfant | Freine les splits trop spécifiques |
subsample | Sous-échantillonnage des lignes | Réduit variance et coût ; trop bas peut introduire du bruit |
colsample_bytree | Sous-échantillonnage des variables | Dé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 |
gamma | Gain minimal requis pour splitter | Empê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èle | Principe | vs XGBoost |
|---|---|---|
| Random Forest | Bagging d'arbres indépendants | Plus robuste et plus simple ; souvent moins performant mais moins exigeant en tuning |
| LightGBM | Boosting histogram-based orienté vitesse | Souvent plus rapide sur gros jeux tabulaires ; comportement différent sur petites données |
| CatBoost | Boosting optimisé pour variables catégorielles | Souvent plus naturel si beaucoup de catégories et moins d'encodage manuel |
| Régression / logistique | Baseline linéaire | Moins expressive, mais plus interprétable et plus stable |
Évaluation et réglage
| Étape | Recommandation |
|---|---|
| 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 |
| Early stopping | Pratiquement 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éthode | Principe | Limites |
|---|---|---|
| Gain | Contribution moyenne d'une variable à la réduction de la loss | Peut survaloriser certaines variables corrélées |
| Cover / weight | Fréquence ou couverture des splits impliquant la variable | Moins informatif sur l'impact réel sur la performance |
| Permutation | Baisse de performance après permutation aléatoire | Plus coûteux, mais souvent plus robuste |
| SHAP | Décomposition locale des contributions de chaque feature | Lecture plus riche ; voir ML appliqué aux marchés |
Applications
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