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>Übungsanweisungen
- 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 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(____)