Implémentation du Gradient Boosting en Python
Travaillez-vous sur un problème de régression et recherchez-vous un algorithme efficace pour résoudre votre problème ? Si oui, vous devez explorer la régression par gradient boosting (ou GBR).
Dans cet article, nous commencerons par une introduction au gradient boosting pour les problèmes de régression, ce qui le rend si avantageux, ainsi que ses différents paramètres. Ensuite, nous mettrons en œuvre le modèle GBR en Python, l'utiliserons pour des prédictions et l'évaluerons.
Commençons.
Photo par Austin Neill/Unsplash
Conditions préalables
Afin de suivre cet article, vous aurez besoin d'une expérience avec le code Python et d'une compréhension de base de l'apprentissage automatique. Nous partirons du principe que tous les lecteurs ont accès à des machines suffisamment puissantes, afin qu'ils puissent exécuter le code fourni.
Pour des instructions sur le démarrage avec le code Python, nous vous recommandons d'essayer ce guide pour débutants afin de configurer votre système et de vous préparer à exécuter des tutoriels pour débutants.
Introduction à la régression par gradient boosting
Le « Boosting » en apprentissage automatique est une méthode qui consiste à combiner plusieurs modèles simples en un seul modèle composite. C'est aussi pourquoi le boosting est connu comme un modèle additif, puisque des modèles simples (également appelés apprenants faibles) sont ajoutés un par un, tout en gardant les arbres existants dans le modèle inchangés. Au fur et à mesure que nous combinons de plus en plus de modèles simples, le modèle final complet devient un prédicteur plus puissant. Le terme « gradient » dans « gradient boosting » vient du fait que l'algorithme utilise la descente de gradient pour minimiser la perte.
Lorsque le gradient boost est utilisé pour prédire une valeur continue – comme l'âge, le poids ou le coût – nous utilisons le gradient boost pour la régression. Ce n'est pas la même chose que d'utiliser la régression linéaire. C'est légèrement différent de la configuration utilisée pour la classification, donc nous nous en tiendrons à la régression dans cet article.
Les arbres de décision sont utilisés comme apprenants faibles dans le gradient boosting. L'arbre de décision résout le problème de l'apprentissage automatique en transformant les données en représentation d'arbre. Chaque nœud interne de la représentation de l'arbre représente un attribut et chaque nœud feuille représente une étiquette de classe. La fonction de perte est généralement l'erreur au carré (en particulier pour les problèmes de régression). La fonction de perte doit être différentiable.
Tout comme la régression linéaire, nous avons également des concepts de résidus dans la régression par gradient boosté. La régression par gradient boosté calcule la différence entre la prédiction actuelle et la valeur cible correcte connue.
Cette différence est appelée résidu. Ensuite, la régression par gradient boosté entraîne un modèle faible qui associe des caractéristiques à ce résidu. Ce résidu prédit par un modèle faible est ajouté aux entrées du modèle existant et ainsi, ce processus pousse le modèle vers la cible correcte. En répétant cette étape encore et encore, la prédiction globale du modèle s'améliore.
Il convient également de noter que la régression par gradient boosting est utilisée pour prédire des valeurs continues comme le prix d'une maison, tandis que la classification par gradient boosting est utilisée pour prédire des classes comme le fait qu'un patient ait une maladie particulière ou non.
Les étapes de haut niveau que nous suivons pour mettre en œuvre la régression par gradient boosting sont les suivantes :
- Sélectionnez un apprenant faible
- Utilisez un modèle additif
- Définir une fonction de perte
- Minimiser la fonction de perte
Photo par Jeremy Bishop/Unsplash
Comparaison de Gradient Boost avec Ada Boost
À la fois le Gradient boost et l'Ada boost fonctionnent avec des arbres décisionnels, cependant, les arbres dans le Gradient Boost sont plus grands que ceux dans l'Ada Boost.
À la fois le Gradient boost et l'Ada boost mettent à l'échelle les arbres de décision, cependant, le Gradient boost met tous les arbres à l'échelle de la même manière contrairement à l'Ada boost.
Avantages du Gradient Boosting
Meilleure précision : La régression par Gradient Boosting offre généralement une meilleure précision. Lorsque nous comparons la précision de la régression GBR avec d'autres techniques de régression comme la régression linéaire, la GBR est souvent la gagnante tout le temps. C'est pourquoi la GBR est utilisée dans la plupart des hackathons en ligne et des compétitions.
Moins de prétraitement : Comme nous le savons, le prétraitement des données est l'une des étapes essentielles dans le flux de travail de l'apprentissage automatique, et si nous ne le faisons pas correctement, cela affecte l'exactitude de notre modèle. Cependant, la régression par Gradient Boosting nécessite un prétraitement minimal des données, ce qui nous aide à mettre en œuvre ce modèle plus rapidement avec moins de complexité. Bien que le prétraitement ne soit pas obligatoire ici, nous devons noter que nous pouvons améliorer la performance du modèle en consacrant du temps au prétraitement des données.
Une flexibilité accrue : La régression par gradient boosting peut être utilisée avec de nombreux hyper-paramètres et fonctions de perte. Cela rend le modèle très flexible et il peut être utilisé pour résoudre une large variété de problèmes.
Données manquantes : Les données manquantes sont l'un des problèmes lors de l'entraînement d'un modèle. La régression par gradient boosting gère les données manquantes de son propre chef et ne nécessite pas que nous les gérions explicitement. Cela représente clairement un grand avantage par rapport à d'autres algorithmes similaires. Dans cet algorithme, les valeurs manquantes sont considérées comme contenant de l'information. Ainsi, lors de la construction de l'arbre, les décisions de division pour le nœud sont prises en minimisant la fonction de perte et en considérant les valeurs manquantes comme une catégorie distincte qui peut aller soit à gauche, soit à droite.
Paramètres de Gradient Boosting
Discutons de quelques paramètres importants utilisés dans la régression par gradient boosting. Ce sont les paramètres que nous aimerions ajuster pour obtenir le meilleur résultat de notre mise en œuvre de l'algorithme.
Photo par Drew Patrick Miller/Unsplash
Nombre d'estimateurs : Il est noté n_estimators.
La valeur par défaut de ce paramètre est de 100.
Le nombre d'estimateurs est essentiellement le nombre d'étapes de renforcement à effectuer par le modèle. En d'autres termes, le nombre d'estimateurs désigne le nombre d'arbres dans la forêt. Plus il y a d'arbres, mieux le modèle apprend les données. D'autre part, un plus grand nombre d'arbres peut entraîner un temps d'entraînement plus long. Nous devons donc trouver la valeur juste et équilibrée de n_estimators pour des performances optimales.
Profondeur Maximale : Elle est désignée par max_depth.
La valeur par défaut de max_depth est 3 et c'est un paramètre optionnel.
La profondeur maximale est la profondeur de l'estimateur de l'arbre de décision dans le régresseur de gradient boosting. Nous devons trouver la valeur optimale de ce hyperparamètre pour obtenir les meilleures performances. Par exemple, la meilleure valeur de ce paramètre peut dépendre des variables d'entrée.
Taux d'apprentissage : Il est noté comme learning_rate.
La valeur par défaut de learning_rate est 0.1 et c'est un paramètre optionnel.
Le taux d'apprentissage est un hyperparamètre dans l'algorithme du régressor à gradient boosting qui détermine la taille du pas à chaque itération en se déplaçant vers un minimum d'une fonction de perte.
Critère : Il est désigné comme critère.
La valeur par défaut du critère est friedman_mse et c'est un paramètre optionnel.
Le critère est utilisé pour mesurer la qualité d'une division pour un arbre de décision.
mse signifie erreur quadratique moyenne.
Perte : Elle est désignée par perte.
La valeur par défaut de la perte est ls et c'est un paramètre optionnel.
Ce paramètre indique la fonction de perte à optimiser. Il existe plusieurs fonctions de perte comme ls qui signifie régression des moindres carrés. La déviation absolue minimale, abrégée en lad, est une autre fonction de perte. Huber, une troisième fonction de perte, est une combinaison de la régression des moindres carrés et de la déviation absolue minimale.
Sous-échantillon : Il est désigné comme sous-échantillon.
La valeur par défaut du sous-échantillon est 1,0 et c'est un paramètre optionnel.
Le sous-échantillon est la fraction d'échantillons utilisée pour ajuster les apprenants d'arbres individuels. Si le sous-échantillon est inférieur à 1,0, cela entraîne une réduction de la variance et une augmentation du biais.
Nombre d'itérations sans changement : Il est désigné par n_iter_no_change.
La valeur par défaut de subsample est None et c'est un paramètre optionnel.
Ce paramètre est utilisé pour décider si l'arrêt anticipé est utilisé pour mettre fin à l'entraînement lorsque le score de validation ne s'améliore pas avec les itérations supplémentaires.
Si ce paramètre est activé, il mettra de côté une fraction de validation de la taille des données d'entraînement comme validation et mettra fin à l'entraînement lorsque le score de validation ne s'améliore pas.
Obtenir les données
Avant de commencer à implémenter le modèle, nous devons obtenir les données. J'ai téléchargé un exemple de données ici. Vous pouvez télécharger les données sur votre machine locale si vous souhaitez essayer sur votre propre machine.
Ci-dessous se trouve la capture d'écran de la description des données. Comme vous pouvez le voir, nous avons deux variables x et y. x est la variable indépendante et y est la variable dépendante.
Données de régression par gradient boosting
Nous allons ajuster ces données sous la forme d'une ligne dont l'équation sera de la forme y=mx + c.
Le m est la pente de la droite et c est l'ordonnée à l'origine de la droite.
Entraînement du modèle GBR
Il est temps de mettre en œuvre le modèle maintenant. Comme vous pouvez le voir dans le code ci-dessous, nous allons commencer par définir les paramètres n_estimators, max_depth, learning_rate et criterion. Les valeurs de ces paramètres sont respectivement 3, 3, 1 et mse. Nous avons stocké les valeurs des paramètres dans une variable appelée params.
Nous avons importé l'ensemble de sklearn et nous utilisons la classe GradientBoostingRegressor définie avec ensemble.
Nous créons l'instance, gradient_boosting_regressor_model, de la classe GradientBoostingRegressor, en passant les paramètres définis ci-dessus au constructeur.
Après cela, nous appelons la méthode fit sur l'instance de modèle gradient_boosting_regressor_model.
Dans la cellule 21 ci-dessous, vous pouvez voir que le modèle GradientBoostingRegressor est généré. Il y a de nombreux paramètres tels que alpha, critère, init, taux d'apprentissage, perte, profondeur maximale, caractéristiques maximales, nœuds feuilles maximaux, diminution minimale de l'impureté, séparation minimale de l'impureté, échantillon minimum feuille, échantillons moyens séparés, fraction de poids minimale feuille, n estimators, n itérations sans changement, pré-tri, état aléatoire, sous-échantillonnage, tolérance, fraction de validation, verbosité et démarrage à chaud, et ses valeurs par défaut sont affichées.
Mise en œuvre de la régression par boosting par gradient en Python
Évaluation du modèle
Évaluons le modèle. Avant d'évaluer le modèle, il est toujours judicieux de visualiser ce que nous avons créé. J'ai donc tracé la caractéristique x par rapport à sa prédiction comme montré dans la figure ci-dessous. Cela nous donne une meilleure compréhension de la façon dont le modèle s'adapte aux données. Et comme on peut le voir clairement dans le diagramme ci-dessous, il semble que nous avons un bon ajustement. Nous utilisons la bibliothèque pyplot pour créer le graphique ci-dessous. Comme vous pouvez le voir dans le code ci-dessous, j'ai d'abord défini la taille de la figure. Ensuite, en utilisant la fonction title, nous devons définir le titre du graphique. Ensuite, nous devons passer la caractéristique et l'étiquette à la fonction scatter. Et enfin, utiliser la fonction plot pour passer la caractéristique, sa prédiction correspondante et la couleur à utiliser.
Visualisez le modèle de régression par gradient boosting
Après la visualisation ci-dessus, il est temps de trouver comment le meilleur modèle s'adapte aux données de manière quantitative. sklearn fournit des métriques pour évaluer le modèle en termes numériques.
Comme vous pouvez le voir ci-dessous, le score d'ajustement du modèle est d'environ 98,90 %. C'est un très bon score, comme prévu d'un modèle tel que la régression par Gradient Boosting.
Trouver comment le meilleur modèle s'adapte aux données
Notes de fin
Dans ce tutoriel, nous avons appris ce qu'est la régression par gradient boosting, quels sont les avantages de son utilisation. Nous avons également discuté des différents hyperparamètres utilisés dans la régression par gradient boosting. Après cela, nous avons chargé des données d'échantillon et entraîné un modèle avec ces données. Avec le modèle entraîné, nous avons essayé de visualiser et de quantifier à quel point le modèle s'adapte bien aux données, ce qui est supérieur à 98 %.
Photo par bruce mars/Unsplash
Merci de votre lecture ! Heureux apprentissage automatique :)





