IniziaInizia gratis

Selezione automatica dei boosting round con early_stopping

Ora, invece di provare a scegliere a mano il numero migliore di boosting round, puoi far selezionare automaticamente a XGBoost il numero di boosting round direttamente dentro xgb.cv(). Questo si fa usando una tecnica chiamata early stopping.

L’early stopping funziona testando il modello XGBoost dopo ogni boosting round su un insieme di validazione separato e interrompendo la creazione di ulteriori boosting round (terminando quindi prima l’addestramento del modello) se la metrica di validazione (nel nostro caso "rmse") non migliora per un certo numero di round. Qui userai il parametro early_stopping_rounds in xgb.cv() con un numero massimo di boosting round pari a 50. Tieni presente che, se la metrica di validazione continua a migliorare fino a quando si raggiunge num_boost_rounds, allora l’early stopping non avviene.

Qui, il DMatrix e il dizionario dei parametri sono già stati creati per te. Il tuo compito è usare la cross-validation con early stopping. Vai!

Questo esercizio fa parte del corso

Extreme Gradient Boosting con XGBoost

Visualizza il corso

Istruzioni dell'esercizio

  • Esegui una cross-validation a 3 fold con early stopping e "rmse" come metrica. Usa 10 round di early stopping e 50 boosting round. Specifica un seed pari a 123 e assicurati che l’output sia un DataFrame pandas. Ricordati di specificare anche gli altri parametri come dtrain, params e metrics.
  • Stampa cv_results.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# 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(____)
Modifica ed esegui il codice