Contrairement aux forêts d'arbres décisionnels, les arbres de décision à boosting de gradient peuvent surapprentissage. Par conséquent, comme pour les réseaux de neurones, vous pouvez appliquer une régularisation et un arrêt prématuré à l'aide d'un ensemble de données de validation.
Par exemple, les figures suivantes montrent des courbes de perte et de justesse pour les ensembles d'entraînement et de validation lors de l'entraînement d'un modèle GBT. Notez que les courbes sont divergentes, ce qui indique un degré élevé de surapprentissage.
Figure 29. Perte et nombre d'arbres de décision.
Figure 30. Précision et nombre d'arbres de décision
Les paramètres de régularisation couramment utilisés pour les arbres de décision à boosting de gradient sont les suivants:
- Profondeur maximale de l'arborescence.
- Taux de réduction.
- Ratio des attributs testés sur chaque nœud.
- coefficients L1 et L2 sur la perte.
Notez que les arbres de décision sont généralement beaucoup plus superficiels que les modèles de forêt aléatoires. Par défaut, les arbres de décision à boosting de gradient TF-DF sont définis sur une profondeur de 6. Comme les arbres sont peu profonds, le nombre minimal d'exemples par feuille a peu d'impact et n'est généralement pas réglé.
Un ensemble de données de validation est nécessaire lorsque le nombre d'exemples d'entraînement est faible. Par conséquent, il est courant d'entraîner des arbres de décision à boosting de gradient dans une boucle de validation croisée, ou de désactiver l'arrêt prématuré lorsque le modèle est connu pour ne pas être en surapprentissage.
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 cet exemple, nous allons simplement remplacer le modèle de forêt aléatoire par un modèle d'arbres de décision à boosting de gradient:
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 de décision à boosting de gradient ont certains avantages et inconvénients.
Avantages
- Comme les arbres de décision, ils sont nativement compatibles avec les caractéristiques numériques et catégorielles, et n'ont souvent pas besoin de prétraiter des caractéristiques.
- Les hyperparamètres par défaut des arbres de décision en dégradé donnent souvent d'excellents résultats. Néanmoins, le réglage de ces hyperparamètres peut considérablement améliorer le modèle.
- Les modèles en arbre de décision à boosting de gradient sont généralement petits (en nombre de nœuds et en mémoire) et rapides à exécuter (souvent un ou plusieurs μs / exemples).
Inconvénients
- Les arbres de décision doivent être entraînés de manière séquentielle, ce qui peut ralentir considérablement l'entraînement. Toutefois, le ralentissement de l'entraînement est quelque peu compensé par le fait que les arbres de décision sont plus petits.
- Tout comme les forêts d'arbres décisionnels, les arbres de décision à boosting de gradient ne peuvent pas apprendre ni réutiliser les représentations internes. Chaque arbre de décision (et chaque branche de chaque arbre de décision) doit réapprendre le modèle de l'ensemble de données. Dans certains ensembles de données, en particulier les ensembles de données contenant des données non structurées (par exemple, des images et du texte), les arbres de décision à boosting de gradient affichent des résultats plus faibles que les autres méthodes.