Zacznij terazZacznij za darmo

Dopasuj model xgboost do danych o wypożyczeniach rowerów i wykonaj predykcję

W tym ćwiczeniu dostosujesz model gradientowego boostingu przy użyciu funkcji xgboost(), aby przewidzieć liczbę rowerów wypożyczonych w ciągu godziny na podstawie warunków pogodowych oraz rodzaju i pory dnia. Model wytrenujesz na danych z lipca, a predykcji dokonasz na danych z sierpnia.

Ramki danych bikesJuly, bikesJuly.treat, bikesAugust oraz bikesAugust.treat są już wczytane. Pamiętaj, że dane przetworzone przez vtreat nie zawierają kolumny wynikowej – musisz pobrać ją z oryginalnych danych (kolumna cnt).

Dla wygody dostępna jest zmienna ntrees z poprzedniego ćwiczenia, określająca liczbę drzew do użycia.

Argumenty funkcji xgboost() (dokumentacja) są podobne do argumentów funkcji xgb.cv().

To ćwiczenie jest częścią kursu

Nadzorowane uczenie maszynowe w R: regresja

Zobacz kurs

Instrukcje do ćwiczenia

  • Uzupełnij brakujące elementy, aby uruchomić xgboost() na danych z lipca.
    • Użyj as.matrix(), aby przekonwertować ramkę danych przetworzoną przez vtreat na macierz.
    • Jako cel (objective) ustaw "reg:squarederror".
    • Użyj ntrees rund.
    • Ustaw eta na 0.75, max_depth na 5, a verbose na FALSE (tryb cichy).
  • Wywołaj teraz predict() na bikesAugust.treat, aby przewidzieć liczbę wypożyczonych rowerów w sierpniu.
    • Użyj as.matrix(), aby przekonwertować przetworzone przez vtreat dane testowe na macierz.
    • Dodaj predykcje do bikesAugust jako kolumnę pred.
  • Uzupełnij brakujące elementy, aby narysować wykres rzeczywistej liczby wypożyczeń w stosunku do predykcji (predykcje na osi x).
    • Czy dostrzegasz potencjalny problem z predykcjami?

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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()
Edytuj i uruchom kod