Supervised Learning ใน R: การถดถอย
Nina Zumel and John Mount
Win-Vector, LLC



Regularization: learning rate $\eta \in(0,1)$
$$ M_2 = M_1 + \eta \gamma T_2 $$

โมเดลสุดท้าย:
$$ M = M_1 + \eta \sum \gamma_i T_i $$

ค่าความผิดพลาดของชุด training ลดลงเรื่อย ๆ แต่ชุด test ไม่ลดตาม
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: ข้อมูล input เป็น matrix ; label: ผลลัพธ์objective: สำหรับ regression - "reg:squarederror"nrounds: จำนวนต้นไม้สูงสุดที่จะฟิตeta: learning ratemax_depth: ความลึกสูงสุดของแต่ละต้นไม้nfold (เฉพาะ xgb.cv()): จำนวน fold สำหรับ cross-validation
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 |
|---|---|
| Quasipoisson | 69.3 |
| Random forests | 67.15 |
| Gradient Boosting | 54.0 |
ค่าทำนายเทียบกับยอดเช่าจักรยานจริง เดือนกุมภาพันธ์

ค่าทำนายและยอดเช่าจักรยานรายชั่วโมง เดือนกุมภาพันธ์

Supervised Learning ใน R: การถดถอย