Qu’est-ce que XGBoost ?

9 mai 2024

Auteurs

Eda Kavlakoglu

Program Manager

Erika Russi

Data Scientist, IBM

Qu’est-ce que XGBoost ?

XGBoost (eXtreme Gradient Boosting) est une bibliothèque de machine learning distribuée et open source qui utilise des arbres de décision auxquels est appliqué le boosting de gradient, ce dernier étant un algorithme de boosting d’apprentissage supervisé qui utilise la descente de gradient. Il est connu pour sa vitesse, son efficacité et sa capacité à s’adapter à de grands jeux de données.

Développée par Tianqi Chen de l’Université de Washington, XGBoost est une implémentation avancée du boosting de gradient avec le même cadre général, c’est-à-dire qu’elle combine des arbres apprenants faibles à des arbres apprenants solides en additionnant les valeurs résiduelles. La bibliothèque est disponible pour C++, Python, R, Java, Scala et Julia1.

Arbres de décision et boosting

Les arbres de décision sont utilisés pour les tâches de classification et de régression dans le machine learning. Ils utilisent une structure hiérarchique en arborescence dans laquelle un nœud interne représente une caractéristique, la branche représente une règle de décision­ et chaque nœud feuille représente le résultat du jeu de données.

Les arbres de décision étant sujets au surajustement, les méthodes d’ensemble, comme le boosting, peuvent souvent être utilisées pour créer des modèles plus robustes. Le boosting combine plusieurs arbres faibles individuels, c’est-à-dire des modèles légèrement plus précis qu’une prédiction aléatoire, pour former un apprenant solide. Chaque apprenant faible est entraîné de façon séquentielle pour corriger les erreurs commises par les modèles précédents. Après des centaines d’itérations, les apprenants faibles sont convertis en apprenants solides.

Les forêts d’arbres décisionnels et les algorithmes de boosting sont des techniques populaires d’apprentissage par ensemble qui utilisent des arbres apprenants individuels pour améliorer les performances prédictives. Les forêts d’arbres décisionnels sont basées sur le concept de « bagging » (bootstrap aggregating) et entraînent chaque arbre indépendamment pour combiner leurs prédictions, tandis que les algorithmes de boosting utilisent une approche additive où les apprenants faibles sont formés de façon séquentielle pour corriger les erreurs des modèles précédents.

Arbres de décision à boosting de gradient 

Les arbres de décision à boosting de gradient sont un type d’algorithme de boosting qui utilise la descente de gradient. Comme d’autres méthodologies de boosting, le boosting de gradient commence par un apprenant faible pour faire des prédictions. Le premier arbre de décision dans le boosting de gradient est appelé l’apprenant de base. Ensuite, de nouveaux arbres sont créés de manière additive en fonction des erreurs de l’apprenant de base. L’algorithme calcule ensuite les valeurs résiduelles des prédictions de chaque arbre pour déterminer dans quelle mesure les prédictions du modèle étaient éloignées de la réalité. Les valeurs résiduelles sont la différence entre les valeurs prédites et les valeurs réelles du modèle. Les valeurs résiduelles sont ensuite agrégées pour noter le modèle avec une fonction de perte.

Dans le machine learning, les fonctions de perte sont utilisées pour mesurer les performances d’un modèle. Le gradient dans les arbres de décision boostés par gradient fait référence à la descente de gradient. La descente de gradient permet de minimiser la perte (c’est-à-dire d’améliorer la performance du modèle) lorsque de nouveaux modèles sont entraînés. La descente de gradient est un algorithme d’optimisation populaire utilisé pour minimiser la fonction de perte dans les problèmes de machine learning. Parmi les fonctions de perte, citons l’erreur quadratique moyenne ou l’erreur absolue moyenne pour les problèmes de regression, la perte d’entropie croisée pour les problèmes de classification, ou des fonctions de perte personnalisées développées pour un cas d’utilisation et un jeu de données spécifiques.

Fonctionnalités de XGBoost

Vous trouverez ci-dessous une analyse de certaines des fonctionnalités de XGBoost en Python, qui le font se démarquer par rapport au paquet de boosting de gradient normal de scikit-learn2 :

  • Calcul parallèle et distribué : la bibliothèque stocke les données dans des unités de mémoire appelées blocs. Des blocs distincts peuvent être distribués entre les machines ou stockés sur une mémoire externe en utilisant l’informatique hors cœur. XGBoost permet également des cas d’utilisation plus avancés, tels que l’entraînement distribué sur un cluster d’ordinateurs pour accélérer les calculs. XGBoost peut également être mis en œuvre dans son mode distribué à l’aide d’outils comme Apache Spark, Dask ou Kubernetes.
  • Algorithme de prérécupération conçu pour s’adapter au cache : XGBoost utilise un algorithme de prérécupération conçu pour s’adapter au cache, ce qui permet de réduire la durée d’exécution pour les grands jeux de données. La bibliothèque peut fonctionner plus de dix fois plus vite que les autres frameworks existants sur une seule machine. En raison de sa vitesse impressionnante, XGBoost peut traiter des milliards d’exemples en utilisant moins de ressources, ce qui en fait un système de boosting d’arbre évolutif.
  • Régularisation intégrée : XGBoost inclut la régularisation dans l’objectif d’apprentissage, contrairement au boosting de gradient normal. Les données peuvent également être régularisées grâce au réglage des hyperparamètres. L’utilisation de la régularisation intégrée de XGBoost permet également à la bibliothèque de donner de meilleurs résultats que le package de boosting de gradient scikit-learn.
  • Gestion des valeurs manquantes : XGBoost utilise un algorithme conçu pour traiter les données éparses, qui peut fonctionner avec des données manquantes. Lorsqu’une valeur est manquante dans le jeu de données, le point de données est classé dans la direction par défaut, et l’algorithme apprend la meilleure direction pour gérer les valeurs manquantes.
Design 3D de balles roulant sur une piste

Les dernières actualités et informations en matière d’IA 


La newsletter hebdomadaire Think vous apporte toute l’actualité sur l’IA, le cloud et bien d’autres sujets.

Comment fonctionne XGBoost ?

Dans cette section, nous verrons comment utiliser le paquet XGBoost, comment sélectionner des hyperparamètres pour le booster d’arbre XGBoost, comment XGBoost peut être comparé à d’autres implémentations de boosting et certains de ses cas d’utilisation.

Fractionnement des données et conversion au format DMatrix

En supposant que vous ayez déjà effectué une analyse exploratoire de vos données, continuez à partager vos données entre un jeu de données d’entraînement et un jeu de données de test. Ensuite, convertissez vos données au format DMatrix attendu par XGBoost.3 DMatrix est la structure de données interne de XGBoost, qui est optimisée pour l’efficacité de la mémoire et la vitesse d’entraînement4.

Générez et évaluez le modèle

Ensuite, instanciez un modèle XGBoost et, selon votre cas d’utilisation, sélectionnez la fonction objective que vous souhaitez utiliser avec l’hyperparamètre « objet ». Par exemple, si vous avez une tâche de classification multiclasse, vous devez définir l’objectif sur « multi:softmax »5. Si vous avez un problème de classification binaire, vous pouvez également utiliser l’objectif de regression logistique « binaire:logistic ». Vous pouvez maintenant utiliser votre jeu d’entraînement pour entraîner le modèle et prévoir les classifications pour les données mises de côté en tant qu’ensemble test. Évaluez la performance du modèle en comparant les valeurs prédites aux valeurs réelles du jeu de test. Vous pouvez utiliser des indicateurs tels que l’exactitude, la précision, le rappel ou le score f-1 pour évaluer votre modèle. Vous pouvez également visualiser vos vrais positifs, vos vrais négatifs, vos faux positifs et vos faux négatifs à l’aide d’une matrice de confusion.

Réglage des hyperparamètres

Ensuite, vous pouvez effectuer une itération à l’aide d’une combinaison d’hyperparamètres pour améliorer les performances de votre modèle. Le réglage des hyperparamètres est le processus d’optimisation des hyperparamètres d’un algorithme de machine learning. Les meilleurs hyperparamètres peuvent être trouvés à l’aide de méthodes de recherche par grille et de validation croisée, qui effectueront des itérations à travers un dictionnaire de combinaisons d’hyperparamètres possibles.

Hyperparamètres sélectionnés pour les arbres à boosting de gradient dans XGBoost

Vous trouverez ci-dessous une explication de certains des hyperparamètres disponibles pour optimiser les arbres à boosting de gradient dans XGBoost :

  • Le taux d’apprentissage est l’hyperparamètre le plus important qui augmente le gradient. Dans la bibliothèque XGBoost, il est appelé « eta », doit être un nombre compris entre 0 et 1, et la valeur par défaut est de 0,36. Le taux d’apprentissage détermine la vitesse à laquelle l’algorithme de boosting apprend de chaque itération. Une valeur d’eta plus faible signifie un apprentissage plus lent, car il réduit la contribution de chaque arbre dans l’ensemble, ce qui permet d’éviter le surajustement. Inversement, une valeur plus élevée d’eta accélère l’apprentissage, mais elle peut conduire à un surajustement si elle n’est pas soigneusement optimisée.
  • L’hyperparamètre n_estimators spécifie le nombre d’arbres à élaborer dans l’ensemble. Chaque cycle de boosting ajoute un nouvel arbre à l’ensemble, et le modèle apprend lentement à corriger les erreurs commises par les arbres précédents. Le paramètre n_estimators dirige la complexité du modèle et influence à la fois le temps d’entraînement et la capacité du modèle à généraliser à des données invisibles. L’augmentation de la valeur de n_estimators augmente généralement la complexité du modèle, car elle permet au modèle de capturer des schémas plus complexes dans les données. Cependant, ajouter trop d’arbres peut conduire à un surapprentissage. D’une manière générale, à mesure que n_estimators augmente, le taux d’apprentissage doit diminuer.
  • Le gamma (également connu sous le nom de multiplicateur de Lagrange ou paramètre de réduction minimale des pertes) contrôle le niveau minimal de réduction des pertes requis pour effectuer une nouvelle division sur le nœud d’une feuille de l’arbre. Une valeur inférieure signifie que XGBoost s’arrête plus tôt mais ne trouvera peut-être pas la meilleure solution ; tandis qu’une valeur plus élevée signifie que XGBoost continue à s’entraîner plus longtemps, trouvant potentiellement de meilleures solutions, mais avec un risque accru de surajustement. Il n’y a pas de limite supérieure pour le gamma. La valeur par défaut dans XGBoost est 0, et toute valeur supérieure à 10 est considérée comme élevée.
  • Max_depth représente la profondeur de croissance de chaque arbre dans le processus de boosting pendant l’entraînement. La profondeur d’un arbre correspond au nombre de niveaux ou de divisions qu’il possède du nœud racine aux nœuds feuilles. L’augmentation de cette valeur rendra le modèle plus complexe et plus susceptible d’être surajusté. Dans XGBoost, la profondeur maximale par défaut est de 6, ce qui signifie que chaque arbre du modèle est autorisé à atteindre une profondeur maximale de 6 niveaux.
Groupe d’experts | Podcast

Décryptage de l’IA : Tour d’horizon hebdomadaire

Rejoignez notre panel d’ingénieurs, de chercheurs, de chefs de produits et autres spécialistes de premier plan pour connaître l’essentiel de l'actualité et des dernières tendances dans le domaine de l’IA.

Comparaison de XGBoost à d’autres algorithmes de boosting

XGBoost est l’un des nombreux algorithmes de boosting open source disponibles. Dans cette section, nous comparerons XGBoost à trois autres frameworks de boosting.

XGBoost et AdaBoost

AdaBoost est un des premiers algorithmes de boosting inventé par Yoav Freund et Robert Schapire en 19957. Dans AdaBoost, l’accent est mis sur les prévisions incorrectes grâce à un système de poids qui affectent les points de données les plus difficiles à prédire de manière plus prononcée. Tout d’abord, chaque point de données du jeu de données se voit attribuer un poids spécifique. Comme les apprenants faibles prédisent correctement un exemple, le poids de l’exemple est réduit. Mais si les apprenants se trompent dans l’exemple, le poids de ce point de données augmente. Au fur et à mesure que de nouveaux arbres sont créés, leurs poids sont basés sur les erreurs de classification des arbres apprenants précédents. À mesure que le nombre d’apprenants augmente, les échantillons faciles à prédire seront moins utilisés pour les apprenants futurs, tandis que les points de données plus difficiles à prévoir seront pondérés de manière plus importante. Le boosting de gradient et XGBoost ont tendance à être des alternatives plus sûres qu’AdaBoost en raison de leur précision et de leur rapidité.

XGBoost et CatBoost

CatBoost est un autre cadre de boosting de gradient. Développé par Yandex en 2017, il est spécialisé dans la gestion des caractéristiques catégorielles sans besoin de prétraitement et fonctionne généralement bien sans avoir à procéder à un réglage approfondi des hyperparamètres8. Comme XGBoost, CatBoost a intégré une prise en charge de la gestion des données manquantes. CatBoost est particulièrement utile pour les jeux de données qui comportent de nombreuses caractéristiques catégorielles. Selon Yandex, ce cadre est utilisé pour la recherche, les systèmes de recommandation, les assistants personnels, les voitures autonomes, la prévision météo et d’autres tâches.

XGBoost et LightGBM

LightGBM (« Light Gradient Boosting Machine ») est le dernier algorithme de boosting de gradient que nous allons examiner. Il a été développé par Microsoft et publié pour la première fois en 20169. Là où la plupart des algorithmes d’apprentissage par arbres de décision développent des arbres en profondeur, LightGBM utilise une stratégie de croissance des arbres par feuilles10. Comme XGBoost, LightGBM présente une vitesse d’entraînement de modèle rapide, une bonne précision et fonctionne bien avec de grands jeux de données.

Applications de XGBoost

XGBoost et les arbres de décision boostés par gradient sont utilisés dans diverses applications de science des données, notamment :

  • Apprendre à classer : l’un des cas d’utilisation les plus populaires de l’algorithme XGBoost est celui de classificateur (« ranker »). Dans la recherche d’information, l’objectif d’apprendre à classer est de proposer aux utilisateurs des contenus classés par pertinence. Dans XGBoost, le XGBRanker est basé sur l’algorithme LambdaMART11.
  • Prédiction du taux de clics sur les publicités : les chercheurs ont utilisé un modèle formé par XGBoost pour déterminer la fréquence des clics sur les publicités en ligne sur la base de 10 jours de données sur le taux de clics. L’objectif de l’étude était de mesurer l’efficacité des publicités en ligne et d’identifier celles qui fonctionnaient bien12.
  • Prévision des ventes en magasin : XGBoost peut être utilisé à des fins de modélisation prédictive, comme le montre cet article où les ventes de 45 magasins Walmart ont été prédites à l’aide d’un modèle XGBoost13.
  • Classification des logiciels malveillants : en utilisant un classificateur XGBoost, les ingénieurs de l’Université technique de Košice ont pu classer les logiciels malveillants avec précision, comme le montre cet article14.
  • Compétitions Kaggle : XGBoost est un algorithme populaire gagnant lors des compétitions Kaggle, comme indiqué sur la page de DMLC (« Distributed (Deep) Machine Learning Community »), qui présente une liste des récents lauréats des compétitions Kaggle qui ont utilisé XGBoost pour leurs contributions15
Solutions connexes
IBM watsonx.ai

Entraînez, validez, réglez et déployez une IA générative, des modèles de fondation et des capacités de machine learning avec IBM watsonx.ai, un studio d’entreprise nouvelle génération pour les générateurs d’IA. Créez des applications d’IA en peu de temps et avec moins de données.

Découvrir watsonx.ai
Solutions d’intelligence artificielle

Mettez l’IA au service de votre entreprise en vous appuyant sur l’expertise de pointe d’IBM dans le domaine de l’IA et sur son portefeuille de solutions.

Découvrir les solutions d’IA
Conseils et services en matière d’IA

Réinventez les workflows et les opérations critiques en ajoutant l’IA pour optimiser les expériences, la prise de décision et la valeur métier en temps réel.

Découvrir les services d’IA
Passez à l’étape suivante

Bénéficiez d’un accès centralisé aux fonctionnalités couvrant le cycle de développement de l’IA. Produisez des solutions IA puissantes offrant des interfaces conviviales, des workflows et un accès à des API et SDK conformes aux normes du secteur.

Découvrir watsonx.ai Réserver une démo en direct
Notes de bas de page

1 « Scalable and Flexible Gradient Boosting », https://xgboost.ai/.

2 Tianqi Chen et Carlos Guestrin, « XGBoost: A Scalable Tree Boosting System », Université de Washington, 10 juin 2016, https://arxiv.org/pdf/1603.02754.

3 « XGBoost Python Package Introduction, Data Interface », https://xgboost.readthedocs.io/en/stable/python/python_intro.html#data-interface.

4 « XGBoost API Reference, Core Data Structure », https://xgboost.readthedocs.io/en/stable/python/python_api.html#module-xgboost.core.

5 « XGBoost Parameters, Learning Task Parameters », https://xgboost.readthedocs.io/en/stable/parameter.html#learning-task-parameters.

« XGBoost Parameters for Tree Booster », https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster.

7 Yoav Freund et Robert E. Schapire, « A decision-theoretic generalization of on-line learning and an application to boosting », Journal of Computer and System Sciences, Vol. 55, pp. 119–139, août 1997.

8 « CatBoost is a high-performance open source library for gradient boosting on decision trees », https://catboost.ai/.

9 Qi Meng, Guolin Ke, Taifeng Wang, Wei Chen, Qiwei Ye, Zhi-Ming Ma et Tie-Yan Liu, « A Communication-Efficient Parallel Algorithm for Decision Tree », Université de Pékin, Microsoft Research et l’Académie chinoise des mathématiques et de la science des systèmes, 4 novembre 2016, https://arxiv.org/pdf/1611.01276.

10 « LightGBM Features, Leaf-wise (Best-first) Tree Growth », https://lightgbm.readthedocs.io/en/latest/Features.html#leaf-wise-best-first-tree-growth.

11 « XGBoost Tutorials, Learning to Rank Overview », https://xgboost.readthedocs.io/en/latest/tutorials/learning_to_rank.html#overview.

12 AlAli Moneera, AlQahtani Maram, AlJuried Azizah, Taghareed AlOnizan, Dalia Alboqaytah, Nida Aslam et Irfan Ullah Khan, « Click through Rate Effectiveness Prediction on Mobile Ads Using Extreme Gradient Boosting », College of Computer Science and Information Technology, Université Imam Abdulrahman bin Faisal, 12 septembre 2020, https://www.techscience.com/cmc/v66n2/40673/html.

13 Yetunde Faith Akande, Joyce Idowu, Abhavya Gautam, Sanjay Misra, Oluwatobi Noah Akande et Ranjan Kumar Behera, « Application of Xgboost Algorithm for Sales Forecasting Using Walmart Dataset », Université Landmark, Université technologique Ladoke Akintola, Université Brandan, Université Covenant et Université XIM, juin 2022, https://www.researchgate.net/publication/361549465_Application_of_XGBoost_Algorithm_for_Sales_Forecasting_Using_Walmart_Dataset.

14 Jakub Palša, Norbert Ádám, Ján Hurtuk, Eva Chovancová, Branislav Madoš, Martin Chovanec et Stanislav Kocan, « MLMD—A Malware-Detecting Antivirus Tool Based on the XGBoost Machine Learning Algorithm », MDPI.com Journal of Applied Sciences, vol. 12, 6672, 1er juillet 2022, https://www.mdpi.com/2076-3417/12/13/6672.

15 « Distributed (Deep) Machine Learning Community XGBoost Machine Learning Challenge Winning Solutions », https://github.com/dmlc/xgboost/tree/master/demo#machine-learning-challenge-winning-solutions.