Automatische Auswahl der Boosting-Runden mit early_stopping
Anstatt mühsam die bestmögliche Anzahl an Boosting-Runden herauszupicken, kannst du XGBoost innerhalb von xgb.cv() ganz einfach automatisch die Anzahl der Boosting-Runden für dich auswählen lassen. Das geschieht mithilfe einer Technik namens Early Stopping.
Early Stopping funktioniert so: Nach jeder Boosting-Runde wird das XGBoost-Modell gegen einen Holdout-Datensatz getestet. Wenn sich die Holdout-Metrik (in unserem Fall "rmse") über eine festgelegte Anzahl von Runden nicht verbessert, wird die Erstellung weiterer Boosting-Runden gestoppt (das Training des Modells endet also früher). Hier wirst du den Parameter early_stopping_rounds in xgb.cv() mit einer großen möglichen Anzahl an Boosting-Runden (50) verwenden. Denk daran: Wenn sich die Holdout-Metrik bis zum Erreichen von num_boost_rounds kontinuierlich verbessert, tritt kein Early Stopping ein.
Hier wurden die DMatrix und das Parameter-Dictionary bereits für dich erstellt. Deine Aufgabe ist es, eine Kreuzvalidierung mit Early Stopping durchzuführen. Los geht’s!
Diese Übung ist Teil des Kurses
Extreme Gradient Boosting mit XGBoost
Anleitung zur Übung
- Führe eine 3-fache Kreuzvalidierung mit Early Stopping und
"rmse"als Metrik durch. Verwende10Early-Stopping-Runden und50Boosting-Runden. Legeseedauf123fest und achte darauf, dass die Ausgabe einpandas-DataFrame ist. Denk daran, die weiteren Parameter wiedtrain,paramsundmetricsanzugeben. - Gib
cv_resultsaus.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# Create your housing DMatrix: housing_dmatrix
housing_dmatrix = xgb.DMatrix(data=X, label=y)
# Create the parameter dictionary for each tree: params
params = {"objective":"reg:squarederror", "max_depth":4}
# Perform cross-validation with early stopping: cv_results
cv_results = ____
# Print cv_results
print(____)