LoslegenKostenlos loslegen

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

Kurs anzeigen

Anleitung zur Übung

  • Führe eine 3-fache Kreuzvalidierung mit Early Stopping und "rmse" als Metrik durch. Verwende 10 Early-Stopping-Runden und 50 Boosting-Runden. Lege seed auf 123 fest und achte darauf, dass die Ausgabe ein pandas-DataFrame ist. Denk daran, die weiteren Parameter wie dtrain, params und metrics anzugeben.
  • Gib cv_results aus.

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(____)
Code bearbeiten und ausführen