ÎncepețiÎncepe gratuit

Utilizarea regularizării în XGBoost

După ce ai văzut un exemplu de regularizare l1 în lecție, vei varia acum penalizarea de regularizare l2 – cunoscută și sub numele de "lambda" – și vei observa efectul acesteia asupra performanței generale a modelului pe setul de date imobiliar Ames.

Acest exercițiu face parte din cursul

Gradient Boosting Extrem cu XGBoost

Vezi cursul

Instrucțiuni pentru exercițiu

  • Creează DMatrix-ul din X și y, ca înainte.
  • Creează un dicționar inițial de parametri specificând "objective" ca "reg:squarederror" și "max_depth" cu valoarea 3.
  • Folosește xgb.cv() în interiorul unei bucle for și variază sistematic valoarea "lambda" transmițând valoarea l2 curentă (reg).
  • Adaugă "test-rmse-mean" din ultima rundă de boosting pentru fiecare model xgboost validat încrucișat.
  • Apasă Trimite răspunsul pentru a vedea rezultatele. Ce observi?

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# 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"]))
Editează și rulează codul