IniziaInizia gratis

Ottimizzare eta

È il momento di esercitarti davvero nell’ottimizzazione di altri iperparametri di XGBoost e osservare il loro effetto sulle prestazioni del modello! Comincerai regolando "eta", noto anche come learning rate.

Il learning rate in XGBoost è un parametro che può variare tra 0 e 1: valori più alti di "eta" penalizzano più fortemente i pesi delle feature, causando una regolarizzazione molto più intensa.

Questo esercizio fa parte del corso

Extreme Gradient Boosting con XGBoost

Visualizza il corso

Istruzioni dell'esercizio

  • Crea una lista chiamata eta_vals per memorizzare i seguenti valori di "eta": 0.001, 0.01 e 0.1.
  • Itera sulla tua lista eta_vals usando un ciclo for.
  • A ogni iterazione del ciclo for, imposta la chiave "eta" di params uguale a curr_val. Quindi esegui una validazione incrociata a 3 fold con early stopping (5 round), 10 round di boosting, metrica "rmse" e seed pari a 123. Assicurati che l’output sia un DataFrame.
  • Aggiungi l’RMSE dell’ultimo round alla lista best_rmse.

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 (boosting round)
params = {"objective":"reg:squarederror", "max_depth":3}

# Create list of eta values and empty list to store final round rmse per xgboost model
____ = [____, ____, ____]
best_rmse = []

# Systematically vary the eta 
for curr_val in ____:

    params["___"] = curr_val
    
    # Perform cross-validation: cv_results
    cv_results = ____
    
    
    
    # Append the final round rmse to best_rmse
    ____.____(____["____"].tail().values[-1])

# Print the resultant DataFrame
print(pd.DataFrame(list(zip(eta_vals, best_rmse)), columns=["eta","best_rmse"]))
Modifica ed esegui il codice