訓練 xgboost 自行車租借模型並進行預測
在這個練習中,你會使用 xgboost() 訓練一個梯度提升模型,根據天氣、類型與一天中的時間來預測每小時租借的自行車數量。你將以 7 月的資料訓練模型,並在 8 月的資料上進行預測。
bikesJuly、bikesJuly.treat、bikesAugust 和 bikesAugust.treat 這些資料框已經預先載入。請記得,經 vtreat 處理後的資料不再包含目標欄位,因此你必須從原始資料中取得(cnt 欄)。
方便起見,上一個練習中的樹數 ntrees 可以直接使用。
xgboost()(文件)的引數與 xgb.cv() 類似。
本練習屬於課程
R 中的監督式學習:回歸
練習說明
- 填空以在 7 月資料上執行
xgboost()。- 使用
as.matrix()將經 vtreated 的資料框轉為矩陣。 - objective 應為
"reg:squarederror"。 - 使用
ntrees輪次。 - 將
eta設為0.75、max_depth設為5,並將verbose設為FALSE(靜默)。
- 使用
- 接著在
bikesAugust.treat上呼叫predict(),預測 8 月的自行車租借量。- 使用
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()