Utiliser la régularisation dans XGBoost
Après avoir vu un exemple de régularisation l1 dans la vidéo, vous allez maintenant faire varier la pénalité de régularisation l2 — aussi appelée "lambda" — et observer son effet sur la performance globale du modèle avec l'ensemble de données sur les maisons d'Ames.
Cette activité fait partie du cours
Amorçage de gradient avancé avec XGBoost
Instructions de l’exercice
- Créez votre
DMatrixà partir deXety, comme plus tôt. - Créez un dictionnaire de paramètres initial en précisant un
"objective"de"reg:squarederror"et un"max_depth"de3. - Utilisez
xgb.cv()à l'intérieur d'une boucleforet faites varier systématiquement la valeur de"lambda"en lui passant la valeur l2 actuelle (reg). - Ajoutez le
"test-rmse-mean"de la dernière itération de rehaussement pour chaque modèlexgboostvalidé croisé. - Cliquez sur "Soumettre la réponse" pour afficher les résultats. Qu'observez-vous?
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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"]))