個々のXGBoostの木を可視化する
これまでにXGBoostで回帰モデルと分類モデルの構築・評価を行いました。ここでは、モデルを視覚的に探究する方法に慣れていきます。住宅価格データセット全体を使ってXGBoostが作成した完全なブースティングモデルから、個々の決定木を可視化します。
XGBoost には、この種の可視化を簡単に行える plot_tree() 関数があります。XGBoost の学習APIでモデルを学習したら、そのモデルを plot_tree() に渡し、num_trees 引数でプロットしたい木の番号を指定します。
この演習はコースの一部です
XGBoost で学ぶ極限の勾配ブースティング
演習の手順
"objective"を"reg:squarederror"、"max_depth"を2とするパラメータ辞書を作成します。10ラウンドのブースティングと作成したパラメータ辞書を用いてモデルを学習し、結果をxg_regに保存します。xgb.plot_tree()を使って最初の木をプロットします。引数は2つで、モデル(ここではxg_reg)と0始まりのnum_treesです。最初の木を描画するにはnum_trees=0を指定します。- 5番目の木をプロットします。
- 最後(10番目)の木を横向きにプロットします。そのためには、追加のキーワード引数として
rankdir="LR"を指定します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Create the DMatrix: housing_dmatrix
housing_dmatrix = xgb.DMatrix(data=X, label=y)
# Create the parameter dictionary: params
params = {"objective":"reg:squarederror", "max_depth":2}
# Train the model: xg_reg
xg_reg = xgb.train(params=params, dtrain=housing_dmatrix, num_boost_round=10)
# Plot the first tree
____
plt.show()
# Plot the fifth tree
____
plt.show()
# Plot the last tree sideways
____
plt.show()