Selectarea automată a rundelor de boosting cu early_stopping
În loc să încerci să alegi manual cel mai bun număr de runde de boosting, poți lăsa XGBoost să îl determine automat, direct în xgb.cv(). Această tehnică se numește early stopping (oprire timpurie).
Early stopping funcționează testând modelul XGBoost după fiecare rundă de boosting pe un set de date de validare și oprind antrenamentul dacă metrica de evaluare ("rmse" în cazul nostru) nu se îmbunătățește timp de un număr dat de runde. În acest exercițiu vei folosi parametrul early_stopping_rounds în xgb.cv() cu un număr maxim de 50 de runde de boosting. Reține că, dacă metrica de validare continuă să se îmbunătățească până când se atinge num_boost_rounds, oprirea timpurie nu va avea loc.
DMatrix și dicționarul de parametri au fost deja create pentru tine. Sarcina ta este să aplici validarea încrucișată cu early stopping. Mult succes!
Acest exercițiu face parte din cursul
Gradient Boosting Extrem cu XGBoost
Instrucțiuni pentru exercițiu
- Efectuează o validare încrucișată cu 3 folduri, cu early stopping și
"rmse"ca metrică. Folosește10runde pentru early stopping și50runde de boosting. Specifică unseedde123și asigură-te că rezultatul este un DataFramepandas. Nu uita să specifici și ceilalți parametri, cum ar fidtrain,paramsșimetrics. - Afișează
cv_results.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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(____)