Aan de slagGa gratis aan de slag

Train een xgboost-model voor fietsverhuur en voorspel

In deze oefening train je een gradient boosting-model met xgboost() om het aantal gehuurde fietsen per uur te voorspellen op basis van het weer, het type en het tijdstip van de dag. Je traint het model op gegevens van de maand juli en voorspelt op gegevens van de maand augustus.

De data frames bikesJuly, bikesJuly.treat, bikesAugust en bikesAugust.treat zijn ook al ingeladen. Onthoud dat de door vtreat bewerkte gegevens de uitkomstkolom niet meer bevatten, dus die moet je uit de oorspronkelijke data halen (de cnt-kolom).

Voor het gemak is het aantal te gebruiken bomen, ntrees uit de vorige oefening, beschikbaar.

De argumenten van xgboost() (docs) lijken op die van xgb.cv().

Deze oefening maakt deel uit van de cursus

Supervised Learning in R: Regressie

Cursus bekijken

Oefeninstructies

  • Vul de invulvelden in om xgboost() op de juli-gegevens uit te voeren.
    • Gebruik as.matrix() om het door vtreat bewerkte data frame om te zetten naar een matrix.
    • De objective moet "reg:squarederror" zijn.
    • Gebruik ntrees rondes.
    • Zet eta op 0.75, max_depth op 5 en verbose op FALSE (stil).
  • Roep nu predict() aan op bikesAugust.treat om het aantal gehuurde fietsen in augustus te voorspellen.
    • Gebruik as.matrix() om de door vtreat bewerkte testdata om te zetten naar een matrix.
    • Voeg de voorspellingen toe aan bikesAugust als de kolom pred.
  • Vul de invulvelden in om de werkelijke aantallen fietsverhuur te plotten tegenover de voorspellingen (voorspellingen op de x-as).
    • Zie je een mogelijk probleem met de voorspellingen?

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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()
Code bewerken en uitvoeren