Im Gegensatz zu Zufallswäldern können sich durch den Farbverlauf gestützte Bäume übertreiben. Daher können Sie bei neuronalen Netzwerken Validierung und vorzeitiges Beenden mit einem Validierungs-Dataset anwenden.
Die folgenden Abbildungen zeigen beispielsweise Verlust- und Genauigkeitskurven für Trainings- und Validierungs-Datasets beim Trainieren eines GBT-Modells. Wie stark die Kurven voneinander abweichen, deutet auf eine Überanpassung hin.
Abbildung 29. Verlust im Vergleich zur Anzahl der Entscheidungsbäume
Abbildung 30. Genauigkeit und Anzahl der Entscheidungsbäume
Häufige Normalisierungsparameter für Boosted Trees in Bäumen sind:
- Die maximale Tiefe des Baums.
- Die Schrumpfrate.
- Das Verhältnis der auf jedem Knoten getesteten Attribute.
- L1- und L2-Koeffizient beim Verlust.
Beachten Sie, dass Entscheidungsbäume in der Regel wesentlich flacher wachsen als zufällige Waldmodelle. Standardmäßig werden in „TF-DF“ verzweigte Bäume mit Farbverlauf auf die Tiefe 6 gezüchtet. Da die Bäume flach sind, hat die Mindestanzahl von Beispielen pro Blatt wenig Einfluss und ist im Allgemeinen nicht abgestimmt.
Ein Validierungs-Dataset ist ein Problem, wenn die Anzahl der Trainingsbeispiele gering ist. Daher ist es üblich, in einem Validierungs-Loop Gradienten mit Boosted Trees zu trainieren oder das vorzeitige Beenden zu deaktivieren, wenn bekannt ist, dass das Modell nicht überpasst.
Verwendungsbeispiel
Im vorigen Kapitel haben wir einen Zufallswald mit einem kleinen Dataset trainiert. In diesem Beispiel ersetzen wir einfach das Zufalls-Gesamtstrukturmodell durch einen Farbverlauf mit Boosted Tree-Modellen:
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
Boosted-Bäume haben verschiedene Vor- und Nachteile.
Vorteile
- Wie Entscheidungsbäume unterstützen sie nativ und kategoriale Merkmale nativ und benötigen häufig keine Vorverarbeitung von Merkmalen.
- Gradient-Bäume haben Standard-Hyperparameter, die oft hervorragende Ergebnisse liefern. Dennoch kann das Optimieren dieser Hyperparameter das Modell erheblich verbessern.
- Gradient Boosted Tree-Modelle sind in der Regel klein (in Bezug auf die Anzahl der Knoten und im Arbeitsspeicher) und schnell auszuführen (oft nur ein oder wenige μs / Beispiele).
Nachteile
- Die Entscheidungsbäume müssen der Reihe nach trainiert werden, was das Training erheblich verlangsamen kann. Der Training-Verlangsamung wird jedoch etwas dadurch ausgeglichen, dass die Entscheidungsbäume kleiner sind.
- Wie zufällige Wälder können auch in Gradienten gestützte Bäume keine internen Darstellungen erlernen und wiederverwenden. Jeder Entscheidungsbaum (und jeder Zweig jedes Entscheidungsbaums) muss das Dataset-Muster neu lernen. In einigen Datasets, insbesondere Datasets mit unstrukturierten Daten (z. B. Bildern, Text), führt dies bei Gradient Boosted-Bäumen zu schlechteren Ergebnissen als bei anderen Methoden.