Automatiskt val av boosting-rundor med early stopping
I stället för att manuellt försöka hitta det optimala antalet boosting-rundor kan du låta XGBoost välja det automatiskt direkt i xgb.cv(). Det görs med hjälp av en teknik som kallas early stopping.
Early stopping fungerar genom att XGBoost-modellen testas mot ett hållout-dataset efter varje boosting-runda. Om hållout-måttet ("rmse" i det här fallet) inte förbättras under ett visst antal rundor avslutas träningen i förtid. Här använder du parametern early_stopping_rounds i xgb.cv() med ett stort möjligt antal boosting-rundor (50). Tänk på att om hållout-måttet fortsätter att förbättras hela vägen tills num_boost_rounds nås, sker ingen early stopping.
Här har DMatrix och parameterordlistan redan skapats åt dig. Din uppgift är att använda korsvalidering med early stopping. Kör på!
Den här övningen är en del av kursen
Extreme Gradient Boosting med XGBoost
Övningsinstruktioner
- Utför 3-faldig korsvalidering med early stopping och
"rmse"som mått. Använd10early stopping-rundor och50boosting-rundor. Angeseedsom123och se till att utdata är enpandasDataFrame. Kom ihåg att ange övriga parametrar såsomdtrain,paramsochmetrics. - Skriv ut
cv_results.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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(____)