Tout comme le bagging et le boosting, le boosting de gradient est une méthodologie appliquée un autre algorithme de machine learning. Le boosting de gradient implique, deux types de modèles:
- un « faible » de ML, généralement un arbre de décision.
- un « fort » de machine learning, qui repose sur plusieurs modèles de ML des modèles de ML.
Lors du boosting de gradient, un nouveau modèle faible est entraîné à chaque pas pour prédire "erreur" du modèle fort actuel (appelé pseudo-réponse). Nous détaillerons le mot clé "error" plus tard. Pour l'instant, supposons que "erreur" est la différence entre la prédiction et une étiquette régressive. Le modèle faible (c'est-à-dire l'erreur) est puis nous l'ajoutons au modèle fort avec un signe négatif pour réduire l'erreur efficace.
L'amélioration de gradient est itérative. Chaque itération appelle la formule suivante:
\[ F_{i+1} = F_i - f_i \]
où :
- $F_i$ est le modèle puissant à l'étape $i$.
- $f_i$ est le modèle faible à l'étape $i$.
Cette opération se répète jusqu'à ce qu'un critère d'arrêt soit rempli, tel qu'une valeur maximale d'itérations ou si le modèle (fort) commence à surapprentissage, tel que mesuré un ensemble de données de validation distinct.
Prenons l'exemple du boosting de gradient sur un ensemble de données de régression simple, où:
- L'objectif est de prédire $y$ à partir de $x$.
- Le modèle fort est initialisé comme une constante nulle: $F_0(x) = 0$.
# Simplified example of regressive gradient boosting.
y = ... # the labels
x = ... # the features
strong_model = []
strong_predictions = np.zeros_like(y) # Initially, the strong model is empty.
for i in range(num_iters):
# Error of the strong model
error = strong_predictions - y
# The weak model is a decision tree (see CART chapter)
# without pruning and a maximum depth of 3.
weak_model = tfdf.keras.CartModel(
task=tfdf.keras.Task.REGRESSION,
validation_ratio=0.0,
max_depth=3)
weak_model.fit(x=x, y=error)
strong_model.append(weak_model)
weak_predictions = weak_model.predict(x)[:,0]
strong_predictions -= weak_predictions
Appliquons ce code à l'ensemble de données suivant:
<ph type="x-smartling-placeholder"></ph> Figure 25. Ensemble de données synthétique régressif avec une caractéristique numérique
Voici trois tracés après la première itération du boosting de gradient algorithme:
<ph type="x-smartling-placeholder"></ph> Figure 26. Trois tracés après la première itération.
Notez les points suivants à propos des tracés de la Figure 26:
- Le premier graphique montre les prédictions du modèle fiable, qui est actuellement toujours 0.
- Le deuxième graphique montre l'erreur, qui est l'étiquette du modèle faible.
- Le troisième graphe montre le modèle faible.
Le premier modèle faible apprend une représentation grossière de l'étiquette, se concentre sur la partie gauche de l'espace des caractéristiques (la partie qui présente le plus de variations, et donc le plus grand nombre d'erreurs pour un mauvais modèle constant).
Voici les mêmes tracés pour une autre itération de l'algorithme:
<ph type="x-smartling-placeholder"></ph> Figure 27. Trois tracés après la deuxième itération.
Notez les points suivants à propos des tracés de la Figure 27:
- Le modèle fort contient à présent la prédiction du modèle faible l'itération précédente.
- La nouvelle erreur du modèle fort est un peu plus petite.
- La nouvelle prédiction du modèle faible se concentre désormais sur la partie droite du d'espace de caractéristiques.
Nous exécutons l'algorithme pour huit itérations supplémentaires:
<ph type="x-smartling-placeholder"></ph> Figure 28. Trois tracés après la troisième et la dixième itération.
Dans la figure 28, notez que la prédiction d'un modèle fort commence à ressembler à le tracé de l'ensemble de données.
Ces figures illustrent l'algorithme de boosting de gradient qui utilise les arbres de décision comme les apprenants faibles. Cette combinaison est appelée arbres de décision à boosting de gradient.
Les tracés précédents suggèrent l'essence de l'optimisation du gradient. Toutefois, il manque les deux opérations réelles suivantes:
- Le rétrécissement
- Optimisation des valeurs feuilles avec une étape de la méthode de Newton
Rétrécissement
Le modèle faible $f_i$ est multiplié par une petite valeur $\nu$ (par exemple, $\nu = 0,1$) avant d'être ajouté au modèle fort $F_i$. Cette petite valeur s'appelle la rétrécissement. En d'autres termes, au lieu d'utiliser chaque itération comme suit, formule:
\[ F_{i+1} = F_i - f_i \]
Chaque itération utilise la formule suivante:
\[ F_{i+1} = F_i - \nu f_i \]
Le rétrécissement lors de l'augmentation de gradient est analogue au taux d'apprentissage dans les réseaux de neurones. Le rétrécissement contrôle la vitesse d'apprentissage du modèle fort, ce qui permet de limiter surapprentissage. En d'autres termes, une valeur de rétrécissement proche de 0,0 réduit davantage le surapprentissage qu'une valeur de rétrécissement proche de 1,0.
Dans notre code ci-dessus, la réduction serait implémentée comme suit:
shrinkage = 0.1 # 0.1 is a common shrinkage value.
strong_predictions -= shrinkage * weak_predictions