Par Équipe Blent
Data Scientist
Publié le 4 févr. 2022
Catégorie Machine Learning
XGBoost (pour contraction de eXtreme Gradient Boosting), est un modèle de Machine Learning très populaire chez les Data Scientists. Ayant fait ses preuves en termes de performance et de vitesse, il a récemment dominé les hackathons et compétitions de Machine Learning, ainsi que les concours de Kaggle pour les données structurées ou tabulaires. Il est largement utilisé pour résoudre non seulement les problèmes de classification ou de régression, mais aussi sur des problématiques courantes d'entreprises tout en utilisant une quantité minimale de ressources.
Dans cet article, nous examinerons le concept de boosting et nous allons détailler le fonctionnement de l'algorithme XGBoost, en quoi son utilisation et ses applications sont variées ainsi que les moyens utiles pour l’optimiser.
L'apprentissage d'ensemble (ou Ensemble Learning) est un concept de Machine Learning dans lequel l’idée est de former plusieurs modèles utilisant le même algorithme d’apprentissage. Le terme ensemble fait référence à une combinaison de modèles individuels créant un modèle plus fort et plus puissant. Il s'agit de centaines ou de milliers d’apprenants avec un objectif commun fusionnés pour résoudre un problème.
À lire aussi : découvrez notre formation MLOps
Cette méthode permet d'accroître la performance et la stabilité du modèle, minimiser sa variance et parvenir à un niveau de précision bien supérieur à celui qui serait réalisé si on utilisait n’importe lequel de ces modèles pris séparément.
Il existe deux grandes méthodes ensemblistes.
Le principe du bagging (aussi appelé bootstrap aggregating) consiste à :
Les modèles dans ce cas sont entraînés simultanément (en même temps). Ils fonctionnent individuellement et indépendamment les uns des autres. C'est le cas par exemple des Random Forest, une des applications phares du bagging.
Le boosting va produire des modèles qui sont très dépendants les uns des autres, contrairement au principe du bagging. En effet les modèles sont entraînés itérativement comme suit.
Il existe plusieurs modèles qui se basent sur le principe de boosting avec différentes méthodes pour déterminer les poids. On peut citer en guise d'exemple : AdaBoost, LPBoost, XGBoost, GradientBoost, BrownBoost.
Le boosting de gradient (Gradient Boosting) est un cas particulier de boosting où les erreurs sont minimisées par l’algorithme de descente de gradient. Pour mieux comprendre de quoi il s'agit, on prendra un exemple.
On souhaite construire un boosting sur des arbres de décision : nous allons donc choisir une faible profondeur pour qu'ils ne soient pas trop complexes (une profondeur de 3 par exemple).
L'arbre de décision n'étant pas très profond, deux choses vont se produire :
En pratique, on aimerait donc corriger les prédictions pour lesquelles les résidus sont élevés, et ne pas toucher à celles dont les résidus sont faibles. Autrement dit, on ne veut corriger que pour les observations qui ont été mal prédites. Et c'est justement ce que va faire le prochain arbre de décision : il va compenser les erreurs commises précédemment sans détériorer les prédictions qui ont été justes.
Comment va-t-il faire pour corriger ?
La réponse est simple : nous allons changer en cours de route la base d'apprentissage. Plutôt que de prédire \(y\), le second arbre doit prédire \(y-\hat{y}\) , car en faisant la somme de la prédiction précédente plus celle du second arbre, on devrait obtenir la réponse \(y\).
Par contre, si la prédiction était déjà correcte, alors \(y-\hat{y} \approx 0\) , et donc le second arbre va prédire une très petite valeur, ce qui ne modifiera pas la valeur déjà prédite.
En répétant l'opération des dizaines de fois, le \(n+1\)-ème arbre va corriger les erreurs du n-ème arbre, ce qui explique cette relation de récurrence entre les modèles.
XGBoost (ou contraction de eXtreme Gradient Boosting) est un modèle de machine Learning basé sur l'apprentissage d'ensemble séquentiel et les arbres de décision. Comme son nom l'indique, il utilise le boosting de gradient.
Détaillons le fonctionnement de l'algorithme se cachant derrière ce modèle. Considérons un classifieur faible initial \(f_0\). Après l'avoir optimisé, la méthode de boosting cherche à construire un nouveau classifieur faible \(f_1\) à partir de \(f_0\) en introduction un terme de résidu\(h\) :
$$f_1(x)=f_0(x) + h(x)$$De sorte que \(f_1\) soit plus performant que \(f_0\). On répétant l'opération un certain nombre de fois, disons p, on construit un classifieur final \(F\) complexe qui est une combinaison linéaire des \(f_i\), où chacun des \(f_i\) est associé à un poids \(\alpha_i\) :
$$F(x)=\sum_{i=1}^n \alpha_i f_i(x)$$Le Gradient Boosting est une technique particulièrement puissante dans le cas où la fonction de perte (mesure d'écart entre les valeurs théoriques et les valeurs prédites) est différentiable (ce qui est notre cas pour une fonction de perte quadratique). Le principe est le suivant :
Ces pseudos-résidus permettent en réalité de s'approcher au plus possible de la solution optimale. L'intérêt du nouveau modèle est donc de capter les observations qui n'ont pas été correctement prédites par les classifieurs précédents.
Avec \(\eta\) le taux d'apprentissage, permettant d'éviter un éventuel sur-apprentissage (principe de régularisation).
Cet algorithme, appliqué au cas des arbres de régression et de classification, s'appelle donc le Gradient Tree Boosting
L'implémentation algorithmique de XGBoost requiert un certain nombre d'hyperparamètres qui peuvent être distingués selon :
les hyperparamètres du XGBoost ne se calibrent pas tous en même temps. En effet, non seulement avec le grand nombre d'hyperparamètres mais aussi parce que l'apprentissage d'un XGBoost est plus long que les autres modèles de Machine Learning, les temps de calculs seraient phénoménaux. À la place, les Data Scientist ont développé une méthode qui n'en reste pas moins efficace.
learning_rate
assez élevé (entre \(0.1\) et \(1\)) .Chaque nouvel arbre est multiplié par le taux d'apprentissage : plus ce taux est faible, plus la convergence vers un optimal sera lente. À l'inverse, un taux trop élevé empêchera le modèle de converger vers un optimal et sera moins précis dans ses prédictions. On fixera de même un nombre d'arbres plus ou moins important en fonction de la complexité des données.max_depth
(désigne la profondeur maximale d'un arbre) et min_child_weight
(fournit un seuil minimal quant au nombre d'individus présents dans un nœud). La meilleure méthode consiste à effectuer une recherche par grille sur ces deux hyperparamètres avec une grille relativement petite (environ une vingtaine de points).Ensuite, le coefficient gamma
pour régulariser les profondeurs des arbres Plus cet hyperparamètre a une valeur élevée, plus la pénalisation empêche de construire des arbres trop profonds si l'apport en performance n'est pas aussi élevé. Il peut être optimisé avec une recherche par grille simple. Habituellement, on teste avec les valeurs \(\gamma \in [0, +\infty[\).
Les hyperparamètres d'échantillonnage colsample_bytree
(un ratio d'échantillonnage aléatoire sur les variables à chaque construction d'un arbre ) et subsample
(un ratio situé entre 0 et 1 sélectionnant aléatoirement des observations à chaque itération pour entraîner un nouvel arbre) peuvent à leur tour être optimisés par une recherche par grille. Notons qu'il n'est souvent pas utile de tester pour des valeurs inférieures à 50%.
Enfin, en présence de données peu volumineuses, il ne reste plus qu'à réduire le taux d'apprentissage learning_rate
(0.01 puis 0.001) tout en augmentant le nombre d'arbres (n_estimators
) avec les hyper-paramètres optimisés des étapes précédentes. Il est fréquent d'utiliser un early stopping dans cette dernière étape lorsque l'on ne sait pas exactement combien d'arbres utiliser. Dans notre cas, puisque nos données sont assez volumineuses (500k lignes), nous n'avons pas le luxe de pouvoir inférer sur ces valeurs.
À lire aussi : découvrez notre formation MLOps
Cette méthode, bien que longue en pratique, permet d'obtenir les meilleures performances pour le XGBoost.
Comme évoqué précédemment, XGBoost est un algorithme de choix dans de nombreuses situations. Il intervient alors pour des besoins très différents.
max_depth
) ou bien construire les modèles sur des échantillons du jeu de données de base (on appelle ça stochastic gradient boosting).Même si le boosting peut accroître sa précision et bien qu'il soit le modèle le plus performant du Machine Learning aujourd'hui, ce modèle sacrifie l’intelligibilité et l’intelligibilité. Il se comporte comme une boite noire, cela est dû principalement à sa composition de plusieurs arbres décisionnels.
Articles similaires
20 sept. 2022
Hugging Face est une startup française qui s'est fait connaître grâce à l'infrastructure NLP qu'ils ont développée. Aujourd'hui, elle est sur le point de révolutionner le domaine du Machine Learning et traitement automatique du langage naturel. Dans cet article, nous allons présenter Hugging Face et détailler les taches de base que cette librairie permet de réaliser. Nous allons également énumérer ses avantages et ses alternatifs.
Équipe Blent
Data Scientist
Lire l'article
12 juil. 2022
spaCy est une bibliothèque open-source pour le traitement avancé du langage naturel. Elle est conçue spécifiquement pour une utilisation en production et permet de construire des applications qui traitent et comprennent de grands volumes de texte.
Équipe Blent
Data Scientist
Lire l'article
4 juil. 2022
Un auto-encodeur est une structure de réseaux neuronaux profonds qui s'entraîne pour réduire la quantité de données nécessaires pour représenter une donnée d'entrée. Ils sont couramment utilisés en apprentissage automatique pour effectuer des tâches de compression de données, d'apprentissage de représentations et de détection de motifs.
Équipe Blent
Data Scientist
Lire l'article
60 rue François 1er
75008 Paris
Blent est une plateforme 100% en ligne pour se former aux métiers Tech & Data.
Organisme de formation n°11755985075.
Data Engineering
IA Générative
MLOps
Cloud & DevOps
À propos
Gestion des cookies
© 2024 Blent.ai | Tous droits réservés