XGBoostのパラメータ解説(回帰問題):数式、図から理解する

概要

XGBoostのパラメータをまとめる。ただし、回帰分析を行う際に重要なパラメータのみを考える。基本的には公式に書かれていることをまとめるが、わかりずらいところも多く適宜補足を加える。パラメータの説明を数式を行うので、XGBoostの原理を先に勉強した方が理解が深まる。

Parameters

Default Parameters

import xgboost as xgb

xgb.XGBRegressor()
XGBRegressor(base_score=0.5, booster='gbtree', colsample_bylevel=1,
             colsample_bynode=1, colsample_bytree=1, gamma=0,
             importance_type='gain', learning_rate=0.1, max_delta_step=0,
             max_depth=3, min_child_weight=1, missing=None, n_estimators=100,
             n_jobs=1, nthread=None, objective='reg:linear', random_state=0,
             reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=None,
             silent=None, subsample=1, verbosity=1)

General Parameters

  • booster (gbtree)
    勾配法の手法を選択する。gbtree, gblinear, dartから選べる。
    • gbtree : 決定木による勾配法
    • gblinear : 線形ブースティング
    • darg : gbtreeにドロップアウトを適用
  • n_estimator (100) : ブースティングに作成する木の合計本数

Parameters for Tree Booster

  • eta or learning_rate (0.1):学習率。open


\require{color}
f = \sum\textcolor{red}{\alpha} f\\

close
  • gamma or min_split_loss (0):正則化の係数。大きければ過学習を防ぐ。open


\require{color}
損失関数をL(\phi)とする\\
L(\phi) = \sum l(\hat{y} _ i, y _ i) + \textcolor{red}{\gamma} T

close
  • max_depth (3):決定木の最大深さ。小さければ過学習を防ぐ。open

tree1が深さ2。tree2が深さ1。 f:id:oosakik:20191126183634p:plain

close
  • min_child_weight (1):1つの葉の重みの合計最小値。小さければ過学習を防ぐ。open

tree2では、重みが+0.9-0.9である。重みの合計値はそれぞれ、1.8、-2.7となる。 f:id:oosakik:20191126183634p:plain

close
  • max_delta_step (0):重みの最大値。小さければアンバランスデータには良いときもある。基本はデフォルトでよい。open


\require{color}
\begin{align}
- \left( \sum _ {i\in I _ j} g _ i\right) / \left(\sum _ {i \in I _ j} h _ i + \lambda\right) = w _ j \leq \textcolor{red}{max\_delta\_step}
\end{align}

close
  • subsample (1):1つの木を作成する際に使うサンプル数の全体のサンプル数に対する割合。この値が1だと、作成される木が似通ってしまう。小さい方が過学習を防ぐ。open

subsample = 使用するサンプルの数 / 全てのサンプルの数

close
  • colsample_bytree (1):1つの木を作成する際に使う特徴量の、全体の特徴量に対する割合。この値が1だと、作成される木が似通ってしまう。小さい方が過学習を防ぐ。open

colsample_bytree = 使用する特徴量の数 / 全ての特徴量の数

close
  • tree_method (auto) 決定木の成長方法アルゴリズムの選択。auto, exact, approx, hist, gup_histが選択可能。
    • auto : データが少ない時はexact、多い時はapproxを選択する。
    • exact(Exact greedy algorithm) : 全探索。
    • approx : Approximate greedy algorithm
    • hist : LightGBMと同様の方法。
    • gpu_hist : gpuの使用。

Learning Task Parameters

  • objective (reg:squarederror) : 目的関数。デフォルトの他にもreg:squaredlogerror, reg:logistic, binary:logisticなど数多く選択肢がある。
  • base_score (0.5) : ツリーの初期値。このパラメータが最適化されれば評価関数の収束を早めることができるが、最終結果にはほとんど影響しない。
  • eval_metric (according to objective) : 評価関数。基本的にはobjecviteで指定された目的関数に合わせられる。feature_importanceを計算される際に参照される。学習、予測とは関係ない。
  • seed (0) : ランダムシード。colsample等で使われる。

参考文献

XGBoost: A Scalable Tree Boosting System
XGBoost公式ドキュメント