gradient boosting, xgboost

Introduction au gradient boosting

Le Gradient Boosting est aujourd’hui l’une des techniques les plus performantes pour traiter des données structurées, popularisée par des librairies comme XGBoost.

Pourtant, beaucoup l’utilisent encore comme une « boîte noire », en ajustant des paramètres sans visualiser la mécanique sous-jacente.

Comprendre le fonctionnement interne de cet algorithme est pourtant la clé pour optimiser vos modèles efficacement. Je vous propose ici de démystifier le Gradient Boosting et de décortiquer ensemble son fonctionnement.

Comment fonctionne le gradient boosting ?

Le principe clé du Gradient Boosting est l’itération : on cherche à améliorer la prédiction globale en entraînant séquentiellement de nouveaux modèles sur les résidus (les erreurs) des modèles précédents.

Contrairement à d’autres méthodes qui cherchent à trouver le meilleur modèle unique tout de suite, le Gradient Boosting construit sa solution couche par couche. Voici par étape comment se déroule le processus logique :

  1. On commence par un modèle simple (souvent très basique) qui fait une première prédiction. Naturellement, celle-ci est imparfaite et laisse un écart avec la réalité : c’est ce qu’on appelle le résidu.
  2. Plutôt que de jeter ce premier modèle, on en entraîne un second. Mais l’objectif de ce second modèle n’est pas de prédire la cible originale, mais de prédire l’erreur commise par le premier. Il agit comme un correcteur.
  3. Le modèle « amélioré » n’est pas simplement le second modèle, mais la somme du premier modèle et du correcteur.

Passage à l’échelle

Dans des algorithmes comme XGBoost, ce cycle est répété des centaines, voire des milliers de fois. À chaque étape, on ajoute un nouveau « correcteur » qui se focalise sur les erreurs laissées par l’ensemble des modèles précédents.

Mathématiquement, on dit que c’est un modèle additif : la prédiction finale est la somme de toutes les petites corrections apportées successivement.

L’intuition derrière cette répétition est que si chaque nouveau modèle parvient à capturer une partie de l’erreur restante, le résidu global va progressivement converger vers 0.

En pratique, on doit contrôler cette convergence pour éviter que le modèle n’apprenne le « bruit » des données, le fameux overfitting.

La notion de Weak Learners

Pour éviter le surapprentissage (overfitting) mentionné précédemment, le gradient boosting adopte une stratégie contre-intuitive : il utilise volontairement des modèles rudimentaires, appelés Weak Learners.

Plutôt que d’utiliser un arbre de décision très complexe et profond capable de tout mémoriser, on contraint fortement la complexité des correcteurs (par exemple, en limitant la profondeur des arbres). L’objectif n’est pas que ce correcteur résolve tout le problème d’un coup, mais qu’il capture juste la tendance générale de l’erreur, sans apprendre le bruit spécifique aux données.

Pour renforcer cette prudence, on utilise un second mécanisme de sécurité : le learning rate (noté η).

Au lieu d’ajouter la totalité de la correction prédite par le Weak Learner, on n’en ajoute qu’une fraction (par exemple η = 0.1). Cela force l’algorithme à faire de nombreux « petits pas » prudents vers la solution, plutôt que quelques grands sauts risqués qui pourraient déstabiliser le modèle global.

Gradient boosting et itération
Gradient boosting et itération (Bobby Tan)

Pourquoi on parle de gradient ?

C’est ici que l’algorithme prend tout son sens mathématique. Ce que les Weak Learners essaient de prédire et de corriger à chaque étape correspond en réalité au gradient de la fonction de coût.

Mathématiquement, le gradient (ou la dérivée) nous indique la direction dans laquelle l’erreur augmente le plus vite. Comme notre objectif est à l’inverse de minimiser cette erreur, nous devons ajuster nos prédictions dans la direction opposée : celle du gradient négatif.

Intuitivement, imaginez que vous êtes sur une montagne (l’erreur) et que vous voulez descendre dans la vallée (l’erreur minimale) dans le brouillard. Le gradient boosting fonctionne ainsi : il regarde la pente sous ses pieds pour savoir quelle direction descend le plus raide, et il déplace les prédictions du modèle par « petits pas » dans cette direction pour améliorer la performance globale.

XGBoost : une variante du gradient boosting

XGBoost est une variante des méthodes de Gradient Boosting qui utilise des arbres de décisions dit Gradient Boosting Tree comme prédicteur d’erreur.

Il commence avec un prédicteur simple qui prédit un nombre arbitraire en générale 0.5 quelque soit l’entrée. Inutile de vous dire que ce prédicteur commet beaucoup d’erreurs.

Le Gradient Boosting est ensuite appliquée jusqu’à ce que l’erreur soit ramenée à un minimum.

De l'arbre de décision à XGBoost en passant par le gradient boosting (Academia)
De l’arbre de décision à XGBoost en passant par le gradient boosting (Academia)

La dénomination eXtreme vient du fait que le XGBoost est une combinaison parfaite de techniques d’optimisation logicielle et matérielle permettant d’obtenir des résultats supérieurs en utilisant moins de ressources informatiques et en un minimum de temps.

La méthode XGBoost
La méthode XGBoost (Science direct)

Depuis d’autres algorithmes de Gradient Boosting ont vu le jour comme LightGBM développé par Microsoft ou encore CatBoost développé par Yandex.

Implémenter XGBoost avec Python

En Python il existe toujours une super libraire pour faire ce que vous rechercher, dans notre cas elle s’appelle xgboost !

Comme pour tout bon modèle il faut chercher les bons hyperparamètres pour obtenir le meilleur résultat possible. Dans le code qui suit on va utiliser la fonction GridSearchCV de scikit-learn pour trouver les bons hyperparamètres.

Grid Search Cross Valildation est un algorithme de recherche d’hyperparamètres qui effectue une recherche exhaustive sur une grille d’hyperparamètres spécifiée.

Il teste toutes les combinaisons possibles des hyperparamètres spécifiés pour déterminer les meilleures valeurs pour ce faire il utilise une validation croisée pour évaluer les performances de chaque combinaison d’hyperparamètres.

from xgboost import XGBClassifier
from sklearn.model_selection import GridSearchCV

# Paramètres à tester pour le réglage des hyperparamètres
param_grid = {
    'learning_rate': [0.01, 0.1, 1],
    'max_depth': [100, 200, 300],
    'min_child_weight': [1, 3, 5],
    'gamma': [1, 3, 5],
    'n_estimators': [300, 500, 700],
    'alpha': [0.01, 0.1, 1],
    'colsample_bytree': [0.8, 0.9, 1]
}

# Initialisation du modèle XGBoost
xgb = XGBClassifier(random_state=42)

# Initialiser GridSearchCV pour ajuster les hyperparamètres du modèle
grid_search = GridSearchCV(xgb, param_grid, cv=5)

# Fit du modèle en utilisant les données d'entraînement
grid_search.fit(X_train, y_train)

# Affichage des meilleurs hyperparamètres trouvés
print("Meilleurs hyperparamètres : ", grid_search.best_params_)

# Sauvegarde des meilleurs hyperparamètres trouvés
xgb_best_param = grid_search.best_params_

# Instanciation du modèle avec les meilleurs hyperparamètres
xgb_optimized = XGBClassifier(**grid_search.best_params_)

# Entraînement du modèle sur les données d'entraînement
xgb_optimized.fit(X_train, y_train)

# Utilisation des hyperparamètres pour faire des prédictions sur les données de test
y_pred = xgb_optimized.predict(X_test)

# Calcul de l'accuracy du modèle
accuracy = accuracy_score(y_test, y_pred)

# Affichage de l'accuracy du modèle
print("Accuracy XGBoost :", accuracy)

Pour aller plus loin avec le gradient boosting

Vidéos sur le Gradient Boost (StatQuest) :

Vidéos sur le XGBoost (StatQuest) :

Conclusion

Le Gradient Boosting s’est imposé comme le standard industriel pour la modélisation de données structurées, surpassant souvent d’autres approches en termes de précision et de rapidité d’exécution.

Comme nous l’avons détaillé, sa performance ne relève pas du hasard, mais d’une construction mathématique rigoureuse : l’optimisation itérative d’une fonction de coût différentiable combinée à des modèles simples (Weak Learners).

Cependant, la puissance d’algorithmes comme XGBoost, LightGBM ou CatBoost s’accompagne d’une exigence de rigueur.

L’efficacité du modèle repose in fine sur la capacité du Data Scientist à maîtriser le compromis biais-variance, notamment à travers un réglage précis des hyperparamètres (taux d’apprentissage, profondeur des arbres, régularisation).

Comprendre la mécanique interne du Gradient Boosting permet de dépasser l’usage en « boîte noire » et d’interpréter plus finement les résultats. C’est cette compréhension théorique qui permet de transformer un modèle performant en une solution robuste et déployable en production.