Im Gegensatz zu zufälligen Wäldern können gradient boosted trees zu stark angepasst werden. Daher können Sie wie bei neuronalen Netzwerken mithilfe eines Validierungsdatensatzes Regularisierung und vorzeitiges Beenden anwenden.
Die folgenden Abbildungen zeigen beispielsweise Verlust- und Genauigkeitskurven für Trainings- und Validierungssätze beim Training eines GBT-Modells. Beachten Sie, wie stark die Kurven auseinanderlaufen, was auf einen hohen Grad der Überanpassung hindeutet.
Abbildung 29. Verlust im Vergleich zur Anzahl der Entscheidungsbäume.
Abbildung 30. Genauigkeit im Vergleich zur Anzahl der Entscheidungsbäume.
Zu den gängigen Regularisierungsparametern für Gradient Boosted Trees gehören:
- Die maximale Tiefe des Baums.
- Die Schrumpfungsrate.
- Das Verhältnis der Attribute, die an jedem Knoten getestet werden.
- L1- und L2-Koeffizient für den Verlust.
Entscheidungsbäume sind in der Regel viel flacher als Random-Forest-Modelle. Standardmäßig werden Gradient Boosted Trees in TF-DF auf eine Tiefe von 6 angewachsen. Da die Bäume flach sind, hat die Mindestanzahl der Beispiele pro Blatt nur geringe Auswirkungen und wird in der Regel nicht angepasst.
Die Notwendigkeit eines Validierungsdatensatzes ist ein Problem, wenn die Anzahl der Trainingsbeispiele gering ist. Daher ist es üblich, Gradient Boosted Trees in einer Kreuzvalidierungsschleife zu trainieren oder die vorzeitige Beendigung zu deaktivieren, wenn bekannt ist, dass das Modell nicht überangepasst ist.
Verwendungsbeispiel
Im vorherigen Kapitel haben wir einen Random Forest auf einem kleinen Datensatz trainiert. In diesem Beispiel ersetzen wir das Random-Forest-Modell einfach durch ein Gradient Boosting-Modell:
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.
Nutzung und Einschränkungen
Gradient Boosted Trees haben einige Vor- und Nachteile.
Vorteile
- Wie Entscheidungsbäume unterstützen sie nativ numerische und kategorische Merkmale und erfordern oft keine Vorverarbeitung der Merkmale.
- Gradient Boosted Trees haben Standardhyperparameter, die oft gute Ergebnisse liefern. Die Optimierung dieser Hyperparameter kann das Modell jedoch erheblich verbessern.
- Gradient Boosted Tree-Modelle sind in der Regel klein (bezüglich der Anzahl der Knoten und des Arbeitsspeichers) und schnell auszuführen (oft nur eine oder wenige µs pro Beispiel).
Nachteile
- Die Entscheidungsbäume müssen nacheinander trainiert werden, was das Training erheblich verlangsamen kann. Die Trainingsverzögerung wird jedoch etwas durch die kleineren Entscheidungsbäume ausgeglichen.
- Wie bei zufälligen Wäldern können auch bei gradient boosted trees keine internen Repräsentationen gelernt und wiederverwendet werden. Jeder Entscheidungsbaum (und jeder Zweig jedes Entscheidungsbaums) muss das Dataset-Muster neu lernen. Bei einigen Datensätzen, insbesondere bei Datensätzen mit unstrukturierten Daten (z. B. Bildern oder Text), führen diese Probleme dazu, dass Gradient Boosted Trees schlechtere Ergebnisse als andere Methoden liefern.