L’algorithme Gradient Boosting Machines : XGBOOST

3 minute read

Published:

XGBoost signifie eXtreme Gradient Boosting. Comme son nom l’indique, c’est un algorithme de Gradient Boosting. Il est codé en C++ et disponible dans à peu près tous les langages de programmations utiles en Machine Learning, tels que Python, R ou encore Julia.

 


 
Qu’est-ce que le Gradient Boosting

Le Gradient Boosting est un algorithme particulier de Boosting. Le Boosting consiste à assembler plusieurs « weak learners » pour en faire un « strong learner », c’est-à-dire assembler plusieurs algorithmes ayant une performance peu élevée pour en créer un beaucoup plus efficace et satisfaisant. L’assemblage de « weak learners » en « strong learner » se fait par l’appel successif de ceux-ci pour estimer une variable d’intérêt.

Dans le cadre d’une régression, le principe va être d’estimer nos outputs par le modèle 1, puis d’utiliser les résidus de ce modèle comme variable cible du modèle 2 et ainsi de suite : 

 
Pour pouvoir prédire un output en fonction d’un input dont on ne connait pas la variable cible, il faut prédire le résidu de chaque modèle et ensuite en faire la somme :

Dans le cadre d’une classification, chaque individu dispose d’un poids qui sera le même au départ, et qui, si un modèle se trompe, sera augmenté avant d’estimer le modèle suivant (qui prendra donc en compte ces poids) :


La particularité du Gradient Boosting est que dans la classification, l’actualisation des poids se calculera de la même façon que la descente de gradient stochastique, et dans la régression, la fonction de coût globale aura aussi la même structure que la descente de gradient stochastique.

Le Gradient Boosting est la plupart du temps utilisé avec des algorithmes d’Arbre de Décision, considérés dans ce cadre comme des « weak learners ».

 

Spécificités de XGBoost

La principale différence entre XGBoost et d’autres implémentations de la méthode du Gradient Boosting réside dans le fait que XGBoost est informatiquement optimisé pour rendre les différents calculs nécessaires à l’application d’un Gradient Boosting rapide. Plus précisément, XGBoost traite les données en plusieurs blocs compressés permettant de les trier  beaucoup plus rapidement ainsi que de les traiter en parallèle.

Mais les avantages de XGBoost ne sont pas uniquement liés à l’implémentation de l’algorithme, et donc à ses performances, mais aussi aux divers paramètres que celui-ci propose. En effet XGBoost propose un panel d’hyperparamètres très important; il est ainsi possible grâce à cette diversité de paramètres, d’avoir un contrôle total sur l’implémentation du Gradient Boosting. Il est aussi possible de rajouter différentes régularisations dans la fonction de perte, limitant un phénomène qui arrive assez souvent lors de l’utilisation d’algorithmes de Gradient Boosting : l’overfitting (le sur-apprentissage).

C’est pour cela que XGBoost est souvent l’algorithme gagnant des compétitions Kaggle, il est rapide, précis et efficace, permettant une souplesse de manœuvre inédite sur le Gradient Boosting. Finalement, rappelons-le, le Gradient Boosting servant principalement à améliorer des modèles faibles, XGBoost aura quasi tout le temps de meilleurs résultats que son modèle faible de base.