Aan de slagGa gratis aan de slag

Regularisatie gebruiken in XGBoost

Na in de video een voorbeeld van l1-regularisatie te hebben gezien, ga je nu de l2-regularisatieboete — ook wel "lambda" genoemd — variëren en het effect op de algehele modelprestatie op de Ames-housinggegevensset bekijken.

Deze oefening maakt deel uit van de cursus

Extreme Gradient Boosting met XGBoost

Cursus bekijken

Oefeninstructies

  • Maak je DMatrix van X en y, net als eerder.
  • Maak een begin-parameterdictionary met "objective" op "reg:squarederror" en "max_depth" op 3.
  • Gebruik xgb.cv() binnen een for-lus en varieer systematisch de "lambda"-waarde door de huidige l2-waarde (reg) door te geven.
  • Voeg de "test-rmse-mean" van de laatste boosting-ronde toe voor elk gevalideerd xgboost-model.
  • Klik op 'Antwoord verzenden' om de resultaten te bekijken. Wat valt je op?

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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"]))
Code bewerken en uitvoeren