CommencerCommencer gratuitement

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

Afficher le cours

Instructions

  • Effectuez une validation croisée en 3 plis avec early stopping et "rmse" comme métrique. Utilisez 10 tours d’early stopping et 50 tours de boosting. Indiquez un seed de 123 et assurez-vous que la sortie soit un DataFrame pandas. N’oubliez pas de préciser les autres paramètres comme dtrain, params et metrics.
  • 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(____)
Modifier et exécuter le code