Recherche de site Web

Une introduction douce à XGBoost pour l'apprentissage automatique appliqué


XGBoost est un algorithme qui a récemment dominé les compétitions d'apprentissage automatique appliqué et Kaggle pour les données structurées ou tabulaires.

XGBoost est une implémentation d'arbres de décision améliorés par gradient, conçus pour la vitesse et les performances.

Dans cet article, vous découvrirez XGBoost et obtiendrez une introduction douce à ce qui existe, d'où il vient et comment vous pouvez en savoir plus.

Après avoir lu cet article, vous saurez :

  • Qu'est-ce que XGBoost et les objectifs du projet.
  • Pourquoi XGBoost doit faire partie de votre boîte à outils d'apprentissage automatique.
  • Où vous pouvez en savoir plus pour commencer à utiliser XGBoost sur votre prochain projet d'apprentissage automatique.

Démarrez votre projet avec mon nouveau livre XGBoost With Python, comprenant des tutoriels pas à pas et les fichiers code source Python pour tous les exemples .

Commençons.

  • Mise à jour en février 2021 : correction des liens rompus.

Qu’est-ce que XGBoost ?

XGBoost signifie eXtreme Gradient Bboosting.

Le nom xgboost, cependant, fait en réalité référence à l'objectif d'ingénierie visant à repousser les limites des ressources de calcul pour les algorithmes d'arbres améliorés. C'est la raison pour laquelle de nombreuses personnes utilisent xgboost.

— Tianqi Chen, en réponse à la question « Quelle est la différence entre la R gbm (machine de boosting de gradient) et la xgboost (boosting de gradient extrême) ? sur Quora

Il s'agit d'une implémentation de machines d'augmentation de gradient créées par Tianqi Chen, désormais avec la contribution de nombreux développeurs. Il appartient à une collection plus large d'outils sous l'égide de la communauté d'apprentissage automatique distribué ou DMLC, qui sont également les créateurs de la populaire bibliothèque d'apprentissage en profondeur mxnet.

Tianqi Chen fournit une histoire brève et intéressante sur la création de XGBoost dans l'article Histoire et leçons derrière l'évolution de XGBoost.

XGBoost est une bibliothèque de logiciels que vous pouvez télécharger et installer sur votre ordinateur, puis y accéder à partir de diverses interfaces. Plus précisément, XGBoost prend en charge les interfaces principales suivantes :

  • Interface de ligne de commande (CLI).
  • C++ (le langage dans lequel la bibliothèque est écrite).
  • Interface Python ainsi qu'un modèle en scikit-learn.
  • Interface R ainsi qu'un modèle dans le package caret.
  • Julie.
  • Langages Java et JVM comme Scala et plateformes comme Hadoop.

Fonctionnalités XGBoost

La bibliothèque est axée sur la vitesse de calcul et les performances du modèle, elle comporte donc peu de fioritures. Néanmoins, il offre un certain nombre de fonctionnalités avancées.

Caractéristiques du modèle

L'implémentation du modèle prend en charge les fonctionnalités des implémentations scikit-learn et R, avec de nouveaux ajouts comme la régularisation. Trois formes principales d'amélioration du gradient sont prises en charge :

  • Algorithme de Gradient Boosting également appelé machine de boosting de gradient incluant le taux d'apprentissage.
  • Stochastic Gradient Boosting avec sous-échantillonnage au niveau de la ligne, de la colonne et de la colonne par niveaux divisés.
  • Regularized Gradient Boosting avec régularisation L1 et L2.

Caractéristiques du système

La bibliothèque fournit un système à utiliser dans une gamme d'environnements informatiques, notamment :

  • Parallélisation de la construction d'arborescences en utilisant tous vos cœurs CPU pendant l'entraînement.
  • Informatique distribué pour la formation de très grands modèles à l'aide d'un cluster de machines.
  • Out-of-Core Computing pour les très grands ensembles de données qui ne tiennent pas dans la mémoire.
  • Optimisation du cache des structures de données et de l'algorithme pour tirer le meilleur parti du matériel.

Caractéristiques de l'algorithme

La mise en œuvre de l'algorithme a été conçue pour l'efficacité du temps de calcul et des ressources mémoire. L'un des objectifs de conception était de tirer le meilleur parti des ressources disponibles pour entraîner le modèle. Certaines fonctionnalités clés de mise en œuvre de l'algorithme incluent :

  • Implémentation Sparse Aware avec gestion automatique des valeurs de données manquantes.
  • Structure de blocs pour prendre en charge la parallélisation de la construction d'arbres.
  • Formation continue afin que vous puissiez encore améliorer un modèle déjà ajusté sur de nouvelles données.

XGBoost est un logiciel open source gratuit disponible pour une utilisation sous la licence permissive Apache-2.

Pourquoi utiliser XGBoost ?

Les deux raisons d’utiliser XGBoost sont aussi les deux objectifs du projet :

  1. Vitesse d'exécution.
  2. Performances du modèle.

1. Vitesse d'exécution XGBoost

Généralement, XGBoost est rapide. Vraiment rapide par rapport à d'autres implémentations de boosting de gradient.

Szilard Pafka a effectué quelques tests objectifs comparant les performances de XGBoost à d'autres implémentations de boosting de gradient et d'arbres de décision en sac. Il a rédigé ses résultats en mai 2015 dans un article de blog intitulé « Benchmarking Random Forest Implementations ».

Il fournit également tout le code sur GitHub et un rapport plus complet des résultats avec des chiffres concrets.

Ses résultats ont montré que XGBoost était presque toujours plus rapide que les autres implémentations de référence de R, Python Spark et H2O.

De son expérience, il a commenté :

J'ai également essayé xgboost, une bibliothèque de boosting populaire capable également de créer des forêts aléatoires. Il est rapide, efficace en mémoire et d'une grande précision

— Szilard Pafka, Analyse comparative des implémentations de forêts aléatoires.

2. Performances du modèle XGBoost

XGBoost domine les ensembles de données structurés ou tabulaires sur les problèmes de modélisation prédictive de classification et de régression.

La preuve est qu’il s’agit de l’algorithme de référence pour les gagnants du concours sur la plateforme concurrentielle de science des données Kaggle.

Par exemple, il existe une liste incomplète des gagnants du concours intitulé : XGBoost : Solutions gagnantes du défi d'apprentissage automatique.

Pour rendre ce point plus tangible, vous trouverez ci-dessous quelques citations perspicaces des gagnants du concours Kaggle :

En tant que gagnant d'un nombre croissant de concours Kaggle, XGBoost nous a encore une fois montré qu'il s'agissait d'un excellent algorithme complet qui mérite d'être inclus dans votre boîte à outils.

— Interview des gagnants de Dato : 1ère place, Mad Professors

En cas de doute, utilisez xgboost.

— Interview du gagnant Avito : 1ère place, Owen Zhang

J'aime les modèles uniques qui fonctionnent bien, et mon meilleur modèle unique était un XGBoost qui pourrait obtenir la 10ème place à lui seul.

— Interview des gagnants Caterpillar : 1ère place

Je n'ai utilisé que XGBoost.

— Liberty Mutual Property Inspection, Interview du gagnant : 1ère place, Qingchen Wang

La seule méthode d'apprentissage supervisé que j'ai utilisée était le gradient boosting, tel qu'implémenté dans l'excellent package xgboost.

— Entretien avec le gagnant de l'achat de coupons de recrutement : 2e place, Halla Yang

Quel algorithme XGBoost utilise-t-il ?

La bibliothèque XGBoost implémente l'algorithme d'arbre de décision d'amélioration du gradient.

Cet algorithme porte de nombreux noms différents tels que l'augmentation de gradient, les arbres de régression additifs multiples, l'augmentation de gradient stochastique ou les machines d'augmentation de gradient.

Le boosting est une technique d'ensemble dans laquelle de nouveaux modèles sont ajoutés pour corriger les erreurs commises par les modèles existants. Les modèles sont ajoutés séquentiellement jusqu'à ce qu'aucune amélioration supplémentaire ne puisse être apportée. Un exemple populaire est l’algorithme AdaBoost qui pondère les points de données difficiles à prédire.

L'augmentation du gradient est une approche dans laquelle de nouveaux modèles sont créés pour prédire les résidus ou les erreurs des modèles précédents, puis additionnés pour effectuer la prédiction finale. C'est ce qu'on appelle l'augmentation du gradient car il utilise un algorithme de descente de gradient pour minimiser la perte lors de l'ajout de nouveaux modèles.

Cette approche prend en charge à la fois les problèmes de modélisation prédictive de régression et de classification.

Pour en savoir plus sur le boosting et le gradient boosting, voir l'exposé de Trevor Hastie sur le gradient boosting machine learning.

Ressources officielles XGBoost

La meilleure source d'informations sur XGBoost est le référentiel GitHub officiel du projet.

De là, vous pouvez accéder au Issue Tracker et au groupe d’utilisateurs qui peuvent être utilisés pour poser des questions et signaler des bogues.

Une excellente source de liens avec des exemples de code et d'aide est la page Awesome XGBoost.

Il existe également une page de documentation officielle qui comprend un guide de démarrage pour une gamme de langues différentes, des didacticiels, des guides pratiques et bien plus encore.

Il existe des articles plus formels sur XGBoost qui valent la peine d'être lus pour plus d'informations sur la bibliothèque :

  • Découverte du boson de Higgs avec des arbres boostés, 2014.
  • XGBoost : un système de boosting d'arbres évolutif, 2016.

Discussions sur XGBoost

Lorsque vous débutez avec un nouvel outil comme XGBoost, il peut être utile de revoir quelques discussions sur le sujet avant de plonger dans le code.

XGBoost : un système de boosting d'arbre évolutif

Tianqi Chen, le créateur de la bibliothèque a donné une conférence au groupe LA Data Science en juin 2016 intitulée « XGBoost : A Scalable Tree Boosting System ».

Vous pouvez consulter les diapositives de son discours ici :

Vous trouverez plus d'informations sur le blog DataScience LA.

XGBoost : Boosting de dégradé extrême

Tong He, contributeur de XGBoost pour l'interface R, a donné une conférence à la NYC Data Science Academy en décembre 2015 intitulée « XGBoost : eXtreme Gradient Boosting ».

Vous pouvez consulter les diapositives de son discours ici :

Vous trouverez plus d'informations sur cette conférence sur le blog de la NYC Data Science Academy.

Installation de XGBoost

Il existe un guide d'installation complet sur le site Web de documentation XGBoost.

Il couvre l'installation pour Linux, Mac OS X et Windows.

Il couvre également l'installation sur des plateformes telles que R et Python.

XGBoost dans R

Si vous êtes un utilisateur R, le meilleur endroit pour commencer est la page CRAN du package xgboost.

À partir de cette page, vous pouvez accéder au package de vignettes R « xgboost » [pdf].

Il existe également d'excellents didacticiels R liés à cette page pour vous aider à démarrer :

  • Découvrez vos données
  • Présentation XGBoost
  • xgboost : Boosting de dégradé extrême [pdf]

Il existe également le didacticiel officiel XGBoost R et le didacticiel Comprendre votre ensemble de données avec XGBoost.

XGBoost en Python

Les instructions d'installation sont disponibles dans la section Python du guide d'installation de XGBoost.

L'introduction officielle du package Python est le meilleur point de départ lorsque vous travaillez avec XGBoost en Python.

Pour commencer rapidement, vous pouvez taper :

sudo pip install xgboost

Il existe également une excellente liste d’exemples de code source en Python sur la procédure pas à pas des fonctionnalités XGBoost Python.

Résumé

Dans cet article, vous avez découvert l'algorithme XGBoost pour l'apprentissage automatique appliqué.

Vous avez appris :

  • XGBoost est une bibliothèque permettant de développer des modèles d'arbres d'amélioration de gradient rapides et hautes performances.
  • XGBoost obtient les meilleures performances sur une gamme de tâches difficiles d’apprentissage automatique.
  • Que vous pouvez utiliser cette bibliothèque depuis la ligne de commande, Python et R et comment commencer.

Avez-vous utilisé XGBoost ? Partagez vos expériences dans les commentaires ci-dessous.

Avez-vous des questions sur XGBoost ou sur cet article ? Posez votre question dans les commentaires ci-dessous et je ferai de mon mieux pour y répondre.

Articles connexes