CommencerCommencez 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

<cours>Extreme Gradient Boosting avec XGBoost</cours>
Voir le cours

Instructions de l’exercice

  • 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 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