Ein xgboost-Modell für Fahrradverleih fitten und vorhersagen
In dieser Übung fittest du ein Gradient-Boosting-Modell mit xgboost(), um die stündliche Anzahl ausgeliehener Fahrräder in Abhängigkeit vom Wetter sowie von Typ und Tageszeit vorherzusagen. Du trainierst das Modell mit Daten aus dem Juli und sagst Werte für den August voraus.
Die Data Frames bikesJuly, bikesJuly.treat, bikesAugust und bikesAugust.treat sind bereits geladen. Denk daran: Die mit vtreat vorbereiteten Daten enthalten die Zielvariable nicht mehr, daher musst du sie aus den Originaldaten holen (die Spalte cnt).
Zur Bequemlichkeit steht dir die Anzahl der zu verwendenden Bäume ntrees aus der vorherigen Übung zur Verfügung.
Die Argumente von xgboost() (docs) sind denen von xgb.cv() ähnlich.
Diese Übung ist Teil des Kurses
<Kurs>Überwachtes Lernen in R: Regression</Kurs>Übungsanweisungen
- Fülle die Lücken aus, um
xgboost()auf den Juli-Daten auszuführen.- Verwende
as.matrix(), um den mit vtreat vorbereiteten Data Frame in eine Matrix zu konvertieren. - Das Objective sollte
"reg:squarederror"sein. - Verwende
ntreesRunden. - Setze
etaauf0.75,max_depthauf5undverboseaufFALSE(stumm).
- Verwende
- Rufe jetzt
predict()aufbikesAugust.treatauf, um die Anzahl der im August ausgeliehenen Fahrräder vorherzusagen.- Verwende
as.matrix(), um die mitvtreatvorbereiteten Testdaten in eine Matrix zu konvertieren. - Füge die Vorhersagen als Spalte
predzubikesAugusthinzu.
- Verwende
- Fülle die Lücken aus, um tatsächliche Ausleihzahlen gegenüber den Vorhersagen zu plotten (Vorhersagen auf der x-Achse).
- Siehst du ein mögliches Problem mit den Vorhersagen?
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# 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()