LoslegenKostenlos starten

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>
Kurs ansehen

Ü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 ntrees Runden.
    • Setze eta auf 0.75, max_depth auf 5 und verbose auf FALSE (stumm).
  • Rufe jetzt predict() auf bikesAugust.treat auf, um die Anzahl der im August ausgeliehenen Fahrräder vorherzusagen.
    • Verwende as.matrix(), um die mit vtreat vorbereiteten Testdaten in eine Matrix zu konvertieren.
    • Füge die Vorhersagen als Spalte pred zu bikesAugust hinzu.
  • 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()
Code bearbeiten und ausführen