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
Instrukcje do ćwiczenia
- Uzupełnij brakujące elementy, aby uruchomić
xgboost()na danych z lipca.- Użyj
as.matrix(), aby przekonwertować ramkę danych przetworzoną przezvtreatna macierz. - Jako cel (
objective) ustaw"reg:squarederror". - Użyj
ntreesrund. - Ustaw
etana0.75,max_depthna5, averbosenaFALSE(tryb cichy).
- Użyj
- Wywołaj teraz
predict()nabikesAugust.treat, aby przewidzieć liczbę wypożyczonych rowerów w sierpniu.- Użyj
as.matrix(), aby przekonwertować przetworzone przezvtreatdane testowe na macierz. - Dodaj predykcje do
bikesAugustjako kolumnępred.
- Użyj
- 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()