Trouver le bon nombre d'arbres pour une machine à gradient boosting
Dans cet exercice, vous vous préparerez à construire un modèle de gradient boosting pour prédire le nombre de vélos loués à l'heure en fonction de la météo ainsi que du type et du moment de la journée. Vous entraînerez le modèle avec les données du mois de juillet.
Les données de juillet ont été préchargées. Rappelez-vous que bikesJuly.treat n'a plus la colonne de sortie, vous devez donc l'obtenir à partir des données non traitées : bikesJuly$cnt.
Vous utiliserez le paquet xgboost pour ajuster le modèle de random forest. 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 de validation.
Pour cet exercice, les principaux arguments de l'appel à xgb.cv() sont :
data: une matrice numérique.label: un vecteur de sorties (également numérique).nrounds: le nombre maximal d'itérations (arbres à construire).nfold: le nombre de volets pour la validation croisée. 5 est un bon choix.objective:"reg:squarederror"pour des sorties continues.eta: le taux d'apprentissage.max_depth: la 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.
Cette activité fait partie du cours
Apprentissage supervisé en R : régression
Instructions de l’exercice
- Remplissez les espaces vides pour exécuter
xgb.cv()sur les données d'entraînement traitées; affectez la sortie à la variablecv.- Utilisez
as.matrix()pour convertir le tableau de données traité en matrice. - Utilisez 50 itérations et une validation croisée à 5 volets.
- Réglez
early_stopping_roundsà 5. - Réglez
etaà 0.75 etmax_depthà 5.
- Utilisez
- Récupérez le tableau de données
evaluation_logà partir decvet affectez-le à la variableelog. Chaque ligne deevaluation_logcorrespond à un arbre supplémentaire, donc le numéro de ligne indique le nombre d'arbres dans le modèle. - Remplissez les espaces vides pour obtenir le nombre d'arbres associé à la valeur minimale des colonnes
train_rmse_meanettest_rmse_mean.which.min()(docs) retourne l'indice de la valeur minimale dans 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)