Aan de slagGa gratis aan de slag

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

Cursus bekijken

Oefeninstructies

  • Voer 3-voudige cross-validatie uit met early stopping en "rmse" als metric. Gebruik 10 early stopping-rondes en 50 boosting-rondes. Geef een seed van 123 op en zorg dat de output een pandas DataFrame is. Vergeet niet de andere parameters te specificeren, zoals dtrain, params en metrics.
  • 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(____)
Code bewerken en uitvoeren