始める無料で始める

xgboost で自転車レンタル数を学習して予測する

この演習では、xgboost() を使って勾配ブースティングモデルを学習し、天気、種別、時間帯から1時間あたりの自転車レンタル台数を予測します。7月のデータで学習し、8月のデータで予測します。

データフレーム bikesJulybikesJuly.treatbikesAugustbikesAugust.treat はすでに読み込まれています。vtreat 済みデータには目的変数の列が含まれない点に注意してください。元のデータから(cnt 列)取得する必要があります。

便宜上、前の演習で使用した木の本数 ntrees が利用できます。

xgboost()docs)の引数は xgb.cv() とよく似ています。

この演習はコースの一部です

R による Supervised Learning:回帰

コースを見る

演習の手順

  • 空欄を埋めて、7月データに対して xgboost() を実行してください。
    • as.matrix() を使って、vtreat 済みデータフレームを行列に変換します。
    • 目的関数は "reg:squarederror" を指定します。
    • 反復回数は ntrees を使います。
    • eta0.75max_depth5verboseFALSE(非表示)に設定します。
  • 次に、bikesAugust.treat に対して predict() を呼び出し、8月のレンタル台数を予測します。
    • テストデータ(vtreat 済み)も as.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()
コードを編集して実行