Contrairement aux forêts d'arbres décisionnels, les arbres à boosting de gradient peuvent surapprendre. Par conséquent, comme pour réseaux de neurones, vous pouvez appliquer une régularisation et un arrêt prématuré l'ensemble de données de validation.
Par exemple, les figures ci-dessous illustrent les courbes de perte et de justesse pour l'entraînement. et de validation lors de l'entraînement d'un modèle GBT. Remarquez à quel point les courbes divergentes ce qui suggère un degré élevé de surapprentissage.
<ph type="x-smartling-placeholder"></ph> Figure 29. Perte en fonction du nombre d'arbres de décision.
<ph type="x-smartling-placeholder"></ph> Figure 30. Précision vs nombre d'arbres de décision
Voici quelques paramètres de régularisation courants pour les arbres de décision à boosting de gradient:
- Profondeur maximale de l'arbre.
- Taux de rétrécissement.
- Le ratio d'attributs testés au niveau de chaque nœud.
- coefficients L1 et L2 sur la perte.
Les arbres de décision poussent généralement bien plus bas que les forêts d'arbres décisionnels des modèles de ML. Par défaut, les arbres à boosting de gradient dans TF-DF atteignent une profondeur de 6. Comme les arbres sont peu profonds, le nombre minimum d'exemples par feuille a ont peu d'impact et ne sont généralement pas ajustés.
Un ensemble de données de validation est nécessaire lorsque le nombre d'entraînements exemples est faible. Par conséquent, il est courant d'entraîner des arbres à boosting de gradient dans une boucle de validation croisée, ou pour désactiver l'arrêt prématuré lorsque le modèle est connue pour ne pas surapprendre.
Exemple d'utilisation
Dans le chapitre précédent, nous avons entraîné une forêt aléatoire sur un petit ensemble de données. Dans ce nous allons simplement remplacer le modèle de forêt aléatoire par un gradient boosté "trees" :
model = tfdf.keras.GradientBoostedTreesModel()
# Part of the training dataset will be used as validation (and removed
# from training).
model.fit(tf_train_dataset)
# The user provides the validation dataset.
model.fit(tf_train_dataset, validation_data=tf_valid_dataset)
# Disable early stopping and the validation dataset. All the examples are
# used for training.
model.fit(
tf_train_dataset,
validation_ratio=0.0,
early_stopping="NONE")
# Note: When "validation_ratio=0", early stopping is automatically disabled,
# so early_stopping="NONE" is redundant here.
Utilisation et limites
Les arbres à boosting de gradient ont des avantages et des inconvénients.
Avantages
- Comme les arbres de décision, ils sont nativement compatibles avec les et n'ont souvent pas besoin de prétraitement des caractéristiques.
- Les arbres à boosting de gradient ont des hyperparamètres par défaut qui donnent souvent résultats. Néanmoins, le réglage de ces hyperparamètres pour améliorer le modèle.
- Les modèles en arbre de décision à boosting de gradient sont généralement petits mémoire) et une exécution rapide (souvent seulement un ou quelques μs / exemples).
Inconvénients
- Les arbres de décision doivent être entraînés de manière séquentielle, ce qui peut ralentir l'entraînement considérablement. Cependant, le ralentissement de l'entraînement est quelque peu compensé les arbres de décision sont plus petits.
- Comme les forêts d'arbres décisionnels, les arbres à boosting de gradient ne peuvent pas apprendre ni réutiliser représentations. Chaque arbre de décision (et chaque branche de chaque arbre de décision) vous devez réapprendre le modèle de l'ensemble de données. Dans certains jeux de données, en particulier ceux avec non structurées (images ou texte, par exemple), le gradient augmente pour obtenir de moins bons résultats qu'avec d'autres méthodes.