LoslegenKostenlos starten

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

<Kurs>Extreme Gradient Boosting mit XGBoost</Kurs>
Kurs ansehen

Übungsanweisungen

  • 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 praktische Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

# 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