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
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
ntreesrondes. - Zet
etaop0.75,max_depthop5enverboseopFALSE(stil).
- Gebruik
- Roep nu
predict()aan opbikesAugust.treatom het aantal gehuurde fietsen in augustus te voorspellen.- Gebruik
as.matrix()om de doorvtreatbewerkte testdata om te zetten naar een matrix. - Voeg de voorspellingen toe aan
bikesAugustals de kolompred.
- Gebruik
- 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()