Trouver le bon nombre d’arbres pour une gradient boosting machine
Dans cet exercice, vous allez préparer la construction d’un modèle de gradient boosting pour prédire le nombre de vélos loués par heure en fonction de la météo, du type et du moment de la journée. Vous entraînerez le modèle sur les données du mois de juillet.
Les données de juillet ont été préchargées. Rappelez-vous que bikesJuly.treat ne contient plus la colonne cible ; vous devez donc la récupérer depuis les données non traitées : bikesJuly$cnt.
Vous utiliserez le package xgboost pour ajuster le modèle de forêt aléatoire. La fonction xgb.cv() (docs) utilise la validation croisée pour estimer l’erreur d’apprentissage hors échantillon à mesure que chaque nouvel arbre est ajouté au modèle. Le nombre approprié d’arbres à utiliser dans le modèle final est celui qui minimise la RMSE sur l’échantillon de validation.
Pour cet exercice, les principaux arguments de l’appel à xgb.cv() sont :
data: une matrice numérique.label: vecteur des valeurs cibles (également numérique).nrounds: nombre maximal d’itérations (arbres à construire).nfold: nombre de plis pour la validation croisée. 5 est un bon choix.objective:"reg:squarederror"pour des cibles continues.eta: le taux d’apprentissage.max_depth: profondeur maximale des arbres.early_stopping_rounds: après ce nombre d’itérations sans amélioration, on arrête.verbose:FALSEpour ne rien afficher.
Cet exercice fait partie du cours
<cours>Apprentissage supervisé en R : Régression</cours>Instructions de l’exercice
- Complétez les blancs pour exécuter
xgb.cv()sur les données d’entraînement traitées ; assignez la sortie à la variablecv.- Utilisez
as.matrix()pour convertir le data frame traité en matrice. - Utilisez 50 itérations, et une validation croisée en 5 plis.
- Définissez
early_stopping_roundsà 5. - Définissez
etaà 0.75,max_depthà 5.
- Utilisez
- Récupérez le data frame
evaluation_logdepuiscvet assignez-le à la variableelog. Chaque ligne deevaluation_logcorrespond à un arbre supplémentaire ; le numéro de ligne indique donc le nombre d’arbres dans le modèle. - Complétez les blancs pour obtenir le nombre d’arbres correspondant à la valeur minimale des colonnes
train_rmse_meanettest_rmse_mean.which.min()(docs) renvoie l’indice de la valeur minimale d’un vecteur.- De combien d’arbres avez-vous besoin ?
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Run xgb.cv
cv <- xgb.cv(data = ____,
label = ___,
nrounds = ___,
nfold = ___,
objective = "reg:squarederror",
eta = ___,
max_depth = ___,
early_stopping_rounds = ___,
verbose = FALSE # silent
)
# Get the evaluation log
elog <- ___
# Determine and print how many trees minimize training and test error
elog %>%
summarize(ntrees.train = ___, # find the index of min(train_rmse_mean)
ntrees.test = ___) # find the index of min(test_rmse_mean)