CommencerCommencez gratuitement

Ajuster un modèle xgboost pour la location de vélos et prédire

Dans cet exercice, vous allez ajuster un modèle de gradient boosting avec xgboost() 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 et prédirez sur les données du mois d’août.

Les data frames bikesJuly, bikesJuly.treat, bikesAugust et bikesAugust.treat ont également été préchargés. Rappelez-vous que les données traitées par vtreat n’ont plus la colonne de variable cible ; vous devez donc la récupérer depuis les données d’origine (la colonne cnt).

Pour vous faciliter la tâche, le nombre d’arbres à utiliser, ntrees de l’exercice précédent, est disponible.

Les arguments de xgboost() (docs) sont similaires à ceux de xgb.cv().

Cet exercice fait partie du cours

<cours>Apprentissage supervisé en R : Régression</cours>
Voir le cours

Instructions de l’exercice

  • Remplissez les blancs pour exécuter xgboost() sur les données de juillet.
    • Utilisez as.matrix() pour convertir le data frame traité par vtreat en matrice.
    • L’objectif doit être "reg:squarederror".
    • Utilisez ntrees itérations.
    • Définissez eta à 0.75, max_depth à 5 et verbose à FALSE (silencieux).
  • Appelez maintenant predict() sur bikesAugust.treat pour prédire le nombre de vélos loués en août.
    • Utilisez as.matrix() pour convertir les données de test traitées par vtreat en matrice.
    • Ajoutez les prédictions à bikesAugust sous forme de colonne pred.
  • Remplissez les blancs pour tracer les décomptes réels de location de vélos en fonction des prédictions (prédictions en abscisse).
    • Voyez-vous un problème possible avec les prédictions ?

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# Run xgboost
bike_model_xgb <- xgboost(data = ___, # training data as matrix
                   label = ___,  # column of outcomes
                   nrounds = ___,       # number of trees to build
                   objective = ___, # objective
                   eta = ___,
                   max_depth = ___,
                   verbose = FALSE  # silent
)

# Make predictions
bikesAugust$pred <- ___(___, ___(___))

# Plot predictions (on x axis) vs actual bike rental count
ggplot(bikesAugust, aes(x = ___, y = ___)) + 
  geom_point() + 
  geom_abline()
Modifier et exécuter le code