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.
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.
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.
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 :
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.
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.
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.
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.
Vous trouverez ci-dessous une explication de certains des hyperparamètres disponibles pour optimiser les arbres à boosting de gradient dans XGBoost :
XGBoost est l’un des nombreux algorithmes de boosting open source disponibles. Dans cette section, nous comparerons XGBoost à trois autres frameworks de boosting.
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é.
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.
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.
XGBoost et les arbres de décision boostés par gradient sont utilisés dans diverses applications de science des données, notamment :
Nous avons interrogé 2 000 entreprises à propos de leurs initiatives d’IA pour découvrir ce qui fonctionne, ce qui ne fonctionne pas et comment progresser.
IBM Granite est notre famille de modèles d’IA ouverts, performants et fiables, conçus pour les entreprises et optimisés pour dimensionner vos applications d’IA. Explorez les options de langage, de code, de séries temporelles et de garde-fous.
Accédez à notre catalogue complet de plus de 100 cours en ligne en souscrivant aujourd’hui un abonnement individuel ou multiutilisateur afin d’élargir vos compétences dans certains de nos produits à un prix avantageux.
Dirigé par des leaders d’opinion IBM, le programme a pour but d’aider les chefs d’entreprise à acquérir les connaissances nécessaires qui leur permettront d’orienter leurs investissements IA vers les opportunités les plus prometteuses.
Vous voulez obtenir un meilleur retour sur vos investissements dans l’IA ? Découvrez comment la mise à l’échelle de l’IA générative dans des domaines clés favorise le changement en aidant vos meilleurs éléments à créer et à fournir de nouvelles solutions innovantes.
Découvrez comment intégrer en toute confiance l’IA générative et le machine learning dans votre entreprise.
Explorez les trois éléments clés d’une stratégie d’IA réussie : créer un avantage concurrentiel, étendre l’IA à l’ensemble de l’entreprise et faire progresser l’IA digne de confiance.
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.
6 « 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.