XGBoost (eXtreme Gradient Boosting) est une technique d’apprentissage automatique puissante et populaire qui a gagné du terrain dans le secteur de la science des données. Depuis sa publication en 2016, l’algorithme a été utilisé pour gagner de nombreux hackathons et concours Kaggle pour ses performances impressionnantes, sa vitesse et sa capacité à résoudre des problèmes complexes avec des ressources minimales.
En quoi consiste XGBoost ?
Le boosting de gradient a été développé par Jerome Friedman. L’idée de base est de combiner la descente de gradient avec des méthodes de boosting afin de créer un algorithme d’apprentissage automatique plus puissant. Cette approche est possible grâce à l’utilisation de la descente de gradient dans la construction itérative d’algorithmes faibles. Le boosting de gradient utilise les principes de l’adaboost, mais les généralise à plusieurs fonctions de coût, alors que l’adaboost n’en utilise qu’une seule.
XGBoost est la version extrême du Boosting de gradient. XGBoost a fait l’objet d’une publication de Tianqi Chen, Carlos Guestrin en 2016. L’idée principale de l’apprentissage avec XGBoost est d’entraîner de façon séquencielle plusieurs modèles et de les combiner successivement en corrigeant itération après itération les erreurs afin d’obtenir le modèle d’ensemble le plus puissant possible. Le résultat de la prédiction est donc constituée de la prédiction de l’ensemble des arbres de décision enchaînés. Cette méthode augmente les performances et la stabilité du modèle tout en minimisant sa variance. En conséquence, l’apprentissage d’ensemble peut atteindre un niveau de précision bien plus élevé que l’utilisation de n’importe lequel des modèles individuels séparément. C’est la raison pour laquelle l’algorithme est plus performant qu’un simple arbre de décision, mais la contre-partie est un déficit d’explicabilité. L’algorithme tire parti de la fameuse méthode de Newton.
XGBoost, un champion des compétitions d’intelligence artificielle
L’algorithme XGBoost a gagné en popularité après avoir été utilisé pour remporter la compétition de Machine Learning d’identification du boson de Higgs sur le site de concours de data science Kaggle. Depuis, il est connu pour avoir remporté de nombreuses autres compétitions sur des tâches de classification et de régression. L’algorithme XGBoost peut être utilisé lorsque vous avez besoin d’améliorer les performances d’un modèle prédictif. Il se prête particulièrement au traitement des données tabulaires. Il est particulièrement efficace lorsqu’il s’agit de grands ensembles de données. Son optimisation nécessite toutefois des compétences supérieures à celles requises pour l’emploi de méthodes simples du type Random Forest.
Comment utiliser l’algorithme XGBoost ?
XGBoost est aujourd’hui disponible sous forme de librairie open-source dans de nombreux langages de programmation dont : Python, Java, C++.. La clef d’une bonne utilisation de l’algorithme réside dans un paramétrage optimal du nombre d’estimateurs, c’est à dire de cycles de décision qui seront enchaînés et du learning rate qui permettra d’éviter que le modèle n’overfit. Il n’est pas rare d’utiliser un nombre d’estimateurs compris entre 100 et 1000. Le paramètre early stopping rounds permet d’interrompre prématurément ces cycles si les performances ne s’améliorent plus sur un nombre d’itérations donné.
Concrètement, l’emploi de XGBoost est très simple et se fait de façon relativement transparente.
Voici une portion de code d’exemple en langage Python :
mon_modele_xgboost = XGBRegressor(n_estimators=500)
mon_modele_xgboost.fit(train_X, train_y, early_stopping_rounds=6,
eval_set=[(test_X, test_y)], verbose=False)