ฝึกโมเดล xgboost สำหรับการเช่าจักรยานและพยากรณ์ผล
ในแบบฝึกหัดนี้ จะได้ฝึกโมเดล gradient boosting โดยใช้ xgboost() เพื่อพยากรณ์จำนวนจักรยานที่เช่าในแต่ละชั่วโมง โดยอิงจากสภาพอากาศ ประเภท และช่วงเวลาของวัน โมเดลจะถูกฝึกด้วยข้อมูลของเดือนกรกฎาคม และพยากรณ์ผลสำหรับเดือนสิงหาคม
ข้อมูล data frame ได้แก่ bikesJuly, bikesJuly.treat, bikesAugust และ bikesAugust.treat ถูกโหลดไว้แล้ว โปรดจำไว้ว่าข้อมูลที่ผ่าน vtreat จะไม่มีคอลัมน์ outcome อีกต่อไป ดังนั้นต้องดึงค่านั้นจากข้อมูลต้นฉบับ (คอลัมน์ cnt)
เพื่อความสะดวก ค่าจำนวนต้นไม้ ntrees จากแบบฝึกหัดก่อนหน้าพร้อมใช้งานแล้ว
อาร์กิวเมนต์ของ xgboost() (docs) มีลักษณะคล้ายกับของ xgb.cv()
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Supervised Learning ใน R: การถดถอย
คำแนะนำการฝึกหัด
- เติมช่องว่างเพื่อรัน
xgboost()กับข้อมูลเดือนกรกฎาคม- ใช้
as.matrix()เพื่อแปลง data frame ที่ผ่าน vtreat ให้เป็น matrix - objective ควรเป็น
"reg:squarederror" - ใช้
ntreesrounds - ตั้งค่า
etaเป็น0.75,max_depthเป็น5และverboseเป็นFALSE(ปิดการแสดงผล)
- ใช้
- เรียกใช้
predict()กับbikesAugust.treatเพื่อพยากรณ์จำนวนจักรยานที่เช่าในเดือนสิงหาคม- ใช้
as.matrix()เพื่อแปลงข้อมูล test ที่ผ่านvtreatให้เป็น matrix - เพิ่มผลการพยากรณ์ลงใน
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()