Обучение с учителем в R: регрессия
Nina Zumel and John Mount
Win-Vector, LLC



Регуляризация: скорость обучения $\eta \in(0,1)$
$$ M_2 = M_1 + \eta \gamma T_2 $$

Итоговая модель:
$$ M = M_1 + \eta \sum \gamma_i T_i $$

Ошибка на обучении продолжает снижаться, а на тесте — нет
xgb.cv() с большим числом раундов (деревьев).xgb.cv() с большим числом раундов (деревьев).xgb.cv()$evaluation_log: записывает оценку RMSE для каждого раунда.xgb.cv() с большим числом раундов (деревьев).xgb.cv()$evaluation_log: записывает оценку RMSE для каждого раунда.xgboost(), задав nrounds = $n_{best}$Сначала подготовьте данные
treatplan <- designTreatmentsZ(bikesJan, vars)
newvars <- treatplan$scoreFrame %>%
filter(code %in% c("clean", "lev")) %>%
use_series(varName)
bikesJan.treat <- prepare(treatplan, bikesJan, varRestriction = newvars)
Для xgboost():
as.matrix(bikesJan.treat)bikesJan$cntcv <- xgb.cv(data = as.matrix(bikesJan.treat), label = bikesJan$cnt,
objective = "reg:squarederror",
nrounds = 100, nfold = 5, eta = 0.3, max_depth = 6)
Основные параметры xgb.cv() и xgboost()
data: входные данные в виде матрицы; label: целевая переменнаяobjective: для регрессии — "reg:squarederror"nrounds: максимальное число деревьевeta: скорость обученияmax_depth: максимальная глубина отдельных деревьевnfold (только xgb.cv()): число блоков для кросс-валидации
elog <- as.data.frame(cv$evaluation_log)
(nrounds <- which.min(elog$test_rmse_mean))
78
nrounds <- 78
model <- xgboost(data = as.matrix(bikesJan.treat),
label = bikesJan$cnt,
nrounds = nrounds,
objective = "reg:squarederror",
eta = 0.3,
max_depth = 6)
Подготовьте данные за февраль и получите прогнозы
bikesFeb.treat <- prepare(treatplan, bikesFeb, varRestriction = newvars)
bikesFeb$pred <- predict(model, as.matrix(bikesFeb.treat))
Качество моделей на данных за февраль
| Модель | RMSE |
|---|---|
| Квазипуассон | 69,3 |
| Случайный лес | 67,15 |
| Градиентный бустинг | 54,0 |
Прогнозы и фактический прокат велосипедов, февраль

Прогнозы и почасовой прокат велосипедов, февраль

Обучение с учителем в R: регрессия