Обучение модели xgboost для прогнозирования аренды велосипедов и получение предсказаний
В этом упражнении вы обучите модель градиентного бустинга с помощью функции xgboost(), чтобы предсказать количество арендованных велосипедов в час в зависимости от погоды, типа дня и времени суток. Модель будет обучена на данных за июль, а предсказания выполнены для данных за август.
Фреймы данных bikesJuly, bikesJuly.treat, bikesAugust и bikesAugust.treat уже загружены. Помните, что данные, обработанные с помощью vtreat, не содержат столбца с целевой переменной — его нужно брать из исходных данных (столбец cnt).
Для удобства значение ntrees — количество деревьев из предыдущего упражнения — уже доступно для использования.
Аргументы функции xgboost() (документация) аналогичны аргументам функции xgb.cv().
Это упражнение является частью курса
Обучение с учителем в R: регрессия
Инструкции к упражнению
- Заполните пропуски, чтобы запустить
xgboost()на данных за июль.- Используйте
as.matrix(), чтобы преобразовать обработанныйvtreat-ом фрейм данных в матрицу. - В качестве целевой функции укажите
"reg:squarederror". - Используйте
ntreesраундов. - Установите
etaравным0.75,max_depthравным5, аverboseравнымFALSE(режим молчания).
- Используйте
- Вызовите
predict()дляbikesAugust.treat, чтобы предсказать количество арендованных велосипедов в августе.- Используйте
as.matrix(), чтобы преобразовать тестовые данные, обработанныеvtreat, в матрицу. - Добавьте предсказания в
bikesAugustв виде столбцаpred.
- Используйте
- Заполните пропуски, чтобы построить график фактического количества аренд велосипедов относительно предсказанных значений (предсказания — на оси X).
- Заметили ли вы возможную проблему с предсказаниями?
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# 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()