CommencezCommencez gratuitement

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

Voir le cours

Instructions de l’exercice

  • Créez votre DMatrix à partir de X et y, comme plus tôt.
  • Créez un dictionnaire de paramètres initial en précisant un "objective" de "reg:squarederror" et un "max_depth" de 3.
  • Utilisez xgb.cv() à l'intérieur d'une boucle for et 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èle xgboost validé 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"]))
Modifier et exécuter le code