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)
準備 2 月資料並進行預測
bikesFeb.treat <- prepare(treatplan, bikesFeb, varRestriction = newvars)
bikesFeb$pred <- predict(model, as.matrix(bikesFeb.treat))
模型在 2 月資料的表現
| 模型 | RMSE |
|---|---|
| Quasipoisson | 69.3 |
| 隨機森林 | 67.15 |
| Gradient Boosting | 54.0 |
2 月份預測值 vs. 實際腳踏車租借量

2 月份預測值與逐時腳踏車租借量

R 中的監督式學習:回歸