始める無料で始める

early_stopping を使ったブースティング回数の自動選択

これまでのように最適なブースティング回数を手作業で選ぶ代わりに、xgb.cv() の中で XGBoost に自動でブースティング回数を選ばせることができます。これは early stopping と呼ばれる手法で実現します。

Early stopping は、各ブースティングラウンドの後にホールドアウトデータに対して XGBoost モデルを評価し、ある一定のラウンド数の間ホールドアウト指標(ここでは "rmse")が改善しなければ、それ以上のブースティングラウンドの作成を停止(つまり学習を早めに打ち切り)します。ここでは xgb.cv()early_stopping_rounds パラメータを使い、ブースティング回数の上限を大きめ(50)に設定します。なお、ホールドアウト指標が num_boost_rounds に到達するまで改善し続けた場合は、early stopping は発生しません。

ここでは、DMatrix とパラメータ辞書は用意済みです。あなたのタスクは、early stopping を用いた交差検証を実行することです。さあ、やってみましょう!

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

XGBoost で学ぶ極限の勾配ブースティング

コースを見る

演習の手順

  • 3 分割の交差検証を early stopping ありで実行し、指標は "rmse" にします。early_stopping_rounds10、ブースティング回数は 50 に設定します。seed123 を指定し、出力が pandas の DataFrame になるようにします。dtrainparamsmetrics などの他のパラメータの指定も忘れないでください。
  • cv_results を出力してください。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Create your housing DMatrix: housing_dmatrix
housing_dmatrix = xgb.DMatrix(data=X, label=y)

# Create the parameter dictionary for each tree: params
params = {"objective":"reg:squarederror", "max_depth":4}

# Perform cross-validation with early stopping: cv_results
cv_results = ____

# Print cv_results
print(____)
コードを編集して実行