IniziaInizia gratis

Stima un modello xgboost per il noleggio bici e prevedi

In questo esercizio, stimerai un modello di gradient boosting usando xgboost() per prevedere il numero di biciclette noleggiate in un’ora in funzione del meteo e del tipo e dell’ora del giorno. Allenerai il modello sui dati del mese di luglio e farai previsioni sui dati di agosto.

I data frame bikesJuly, bikesJuly.treat, bikesAugust e bikesAugust.treat sono già stati pre-caricati. Ricorda che i dati trasformati con vtreat non hanno più la colonna dell’output, quindi devi recuperarla dai dati originali (la colonna cnt).

Per comodità, il numero di alberi da usare, ntrees dall’esercizio precedente, è a disposizione.

Gli argomenti di xgboost() (docs) sono simili a quelli di xgb.cv().

Questo esercizio fa parte del corso

Supervised Learning in R: Regression

Visualizza il corso

Istruzioni dell'esercizio

  • Completa gli spazi per eseguire xgboost() sui dati di luglio.
    • Usa as.matrix() per convertire i dati trattati con vtreat in una matrice.
    • L’objective deve essere "reg:squarederror".
    • Usa ntrees round.
    • Imposta eta a 0.75, max_depth a 5 e verbose a FALSE (silenzioso).
  • Ora chiama predict() su bikesAugust.treat per prevedere il numero di biciclette noleggiate in agosto.
    • Usa as.matrix() per convertire i dati di test trattati con vtreat in una matrice.
    • Aggiungi le previsioni a bikesAugust come colonna pred.
  • Completa gli spazi per tracciare i conteggi reali dei noleggi bici rispetto alle previsioni (previsioni sull’asse x).
    • Noti un possibile problema nelle previsioni?

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# 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()
Modifica ed esegui il codice