IniziaInizia gratis

Usare la regolarizzazione in XGBoost

Dopo aver visto un esempio di regolarizzazione l1 nel video, ora varierai la penalizzazione di regolarizzazione l2 - anche nota come "lambda" - e ne osserverai l'effetto sulle prestazioni complessive del modello sul dataset delle case di Ames.

Questo esercizio fa parte del corso

Extreme Gradient Boosting con XGBoost

Visualizza il corso

Istruzioni dell'esercizio

  • Crea la tua DMatrix a partire da X e y come prima.
  • Crea un dizionario iniziale di parametri specificando "objective" uguale a "reg:squarederror" e "max_depth" uguale a 3.
  • Usa xgb.cv() dentro un ciclo for e varia in modo sistematico il valore di "lambda" passando l'attuale valore l2 (reg).
  • Aggiungi il valore di "test-rmse-mean" dall'ultimo boosting round per ciascun modello xgboost validato in cross-validation.
  • Premi "Invia risposta" per visualizzare i risultati. Cosa noti?

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# Create the DMatrix: housing_dmatrix
housing_dmatrix = xgb.DMatrix(data=X, label=y)

reg_params = [1, 10, 100]

# Create the initial parameter dictionary for varying l2 strength: params
params = {"____":"____","____":____}

# Create an empty list for storing rmses as a function of l2 complexity
rmses_l2 = []

# Iterate over reg_params
for reg in reg_params:

    # Update l2 strength
    params["lambda"] = ____
    
    # Pass this updated param dictionary into cv
    cv_results_rmse = ____.____(dtrain=____, params=____, nfold=2, num_boost_round=5, metrics="rmse", as_pandas=True, seed=123)
    
    # Append best rmse (final round) to rmses_l2
    ____.____(____["____"].tail(1).values[0])

# Look at best rmse per l2 param
print("Best rmse as a function of l2:")
print(pd.DataFrame(list(zip(reg_params, rmses_l2)), columns=["l2", "rmse"]))
Modifica ed esegui il codice