CommencerCommencer 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 les performances globales du modèle sur le jeu de données des logements d’Ames.

Cet exercice fait partie du cours

Extreme Gradient Boosting avec XGBoost

Afficher le cours

Instructions

  • Créez votre DMatrix à partir de X et y comme précédemment.
  • Créez un dictionnaire de paramètres initial spécifiant un "objective" de "reg:squarederror" et un "max_depth" de 3.
  • Utilisez xgb.cv() dans une boucle for et faites varier systématiquement la valeur de "lambda" en passant la valeur l2 courante (reg).
  • Ajoutez le "test-rmse-mean" du dernier tour de boosting 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 cet exemple de code.

# 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