Sélection automatique du nombre de tours de boosting avec early_stopping
Plutôt que d’essayer de choisir manuellement le nombre optimal de tours de boosting, vous pouvez demander à XGBoost de sélectionner automatiquement ce nombre dans xgb.cv(). Cela se fait grâce à une technique appelée early stopping.
L’early stopping consiste à évaluer le modèle XGBoost après chaque tour de boosting sur un jeu de validation (hold-out) et à arrêter la création de nouveaux tours (ce qui met fin plus tôt à l’entraînement) si la métrique du jeu de validation ("rmse" dans notre cas) ne s’améliore pas pendant un certain nombre de tours. Ici, vous utiliserez le paramètre early_stopping_rounds dans xgb.cv() avec un nombre potentiellement élevé de tours de boosting (50). Gardez à l’esprit que si la métrique du jeu de validation s’améliore en continu jusqu’à atteindre num_boost_rounds, alors aucun early stopping n’a lieu.
Ici, le DMatrix et le dictionnaire de paramètres ont été préparés pour vous. Votre tâche est d’utiliser la validation croisée avec early stopping. À vous de jouer !
Cet exercice fait partie du cours
Extreme Gradient Boosting avec XGBoost
Instructions
- Effectuez une validation croisée en 3 plis avec early stopping et
"rmse"comme métrique. Utilisez10tours d’early stopping et50tours de boosting. Indiquez unseedde123et assurez-vous que la sortie soit un DataFramepandas. N’oubliez pas de préciser les autres paramètres commedtrain,paramsetmetrics. - Affichez
cv_results.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# Create your housing DMatrix: housing_dmatrix
housing_dmatrix = xgb.DMatrix(data=X, label=y)
# Create the parameter dictionary for each tree: params
params = {"objective":"reg:squarederror", "max_depth":4}
# Perform cross-validation with early stopping: cv_results
cv_results = ____
# Print cv_results
print(____)