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
Istruzioni dell'esercizio
- Crea una lista chiamata
eta_valsper memorizzare i seguenti valori di"eta":0.001,0.01e0.1. - Itera sulla tua lista
eta_valsusando un ciclofor. - A ogni iterazione del ciclo
for, imposta la chiave"eta"diparamsuguale acurr_val. Quindi esegui una validazione incrociata a 3 fold con early stopping (5round),10round di boosting, metrica"rmse"eseedpari a123. 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"]))