1. 学ぶ
  2. /
  3. コース
  4. /
  5. R による Supervised Learning:回帰

Connected

演習

Gradient Boosting Machine の木の本数を見つける

この演習では、天気、曜日や時間帯などを説明変数として、1時間あたりのレンタル自転車台数を予測するための Gradient Boosting モデルを作る準備をします。モデルは7月のデータで学習します。

7月のデータはあらかじめ読み込まれています。bikesJuly.treat には目的変数の列が含まれていないので、未処理データから取得してください:bikesJuly$cnt。

xgboost パッケージを使ってモデルを学習します。関数 xgb.cv()(docs)は、各木が追加されるたびに、交差検証で汎化誤差を推定します。最終モデルで使う適切な木の本数は、ホールドアウト RMSE が最小になる本数です。

この演習での xgb.cv() の主な引数は次のとおりです。

  • data: 数値行列。
  • label: 目的変数のベクトル(数値)。
  • nrounds: 最大ラウンド数(構築する木の本数)。
  • nfold: 交差検証の分割数。5 が適切です。
  • objective: 連続値の目的変数には "reg:squarederror"。
  • eta: 学習率。
  • max_depth: 木の最大深さ。
  • early_stopping_rounds: 改善が見られないラウンド数に達したら学習を停止。
  • verbose: 出力を抑えるには FALSE。

指示

100 XP
  • 空欄を埋めて、処理済みの学習データに対して xgb.cv() を実行し、出力を変数 cv に代入してください。
    • データフレーム(処理済み)を行列に変換するために as.matrix() を使います。
    • ラウンドは 50、5-fold 交差検証を使います。
    • early_stopping_rounds は 5 に設定します。
    • eta は 0.75、max_depth は 5 に設定します。
  • cv からデータフレーム evaluation_log を取得し、変数 elog に代入してください。evaluation_log の各行は木が1本追加されたことに対応するので、行番号がモデル内の木の本数を表します。
  • 空欄を埋めて、列 train_rmse_mean と test_rmse_mean の最小値に対応する木の本数を取得してください。
    • which.min()(docs)は、ベクトル内の最小値のインデックスを返します。
    • 何本の木が必要でしょうか?