Automatische selectie van boosting-rondes met early_stopping
In plaats van te proberen het ideale aantal boosting-rondes handmatig te kiezen, kun je XGBoost het aantal boosting-rondes automatisch voor je laten bepalen binnen xgb.cv(). Dit gebeurt met een techniek die early stopping heet.
Early stopping test na elke boosting-ronde het XGBoost-model op een hold-outgegevensset en stopt met het aanmaken van extra boosting-rondes (en beëindigt zo het trainen van het model eerder) als de hold-out-metric (in ons geval "rmse") gedurende een opgegeven aantal rondes niet verbetert. Hier gebruik je de parameter early_stopping_rounds in xgb.cv() met een groot mogelijk aantal boosting-rondes (50). Houd er rekening mee dat als de hold-out-metric blijft verbeteren tot en met het bereiken van num_boost_rounds, early stopping niet plaatsvindt.
Hier zijn de DMatrix en het parameterwoordenboek al voor je aangemaakt. Jouw taak is om cross-validatie met early stopping te gebruiken. Aan de slag!
Deze oefening maakt deel uit van de cursus
Extreme Gradient Boosting met XGBoost
Oefeninstructies
- Voer 3-voudige cross-validatie uit met early stopping en
"rmse"als metric. Gebruik10early stopping-rondes en50boosting-rondes. Geef eenseedvan123op en zorg dat de output eenpandasDataFrame is. Vergeet niet de andere parameters te specificeren, zoalsdtrain,paramsenmetrics. - Print
cv_results.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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(____)