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
- max_depth (3):決定木の最大深さ。小さければ過学習を防ぐ。open
tree1が深さ2。tree2が深さ1。
- min_child_weight (1):1つの葉の重みの合計最小値。小さければ過学習を防ぐ。open
tree2では、重みが+0.9
、-0.9
である。重みの合計値はそれぞれ、1.8、-2.7となる。
- max_delta_step (0):重みの最大値。小さければアンバランスデータには良いときもある。基本はデフォルトでよい。open
- subsample (1):1つの木を作成する際に使うサンプル数の全体のサンプル数に対する割合。この値が1だと、作成される木が似通ってしまう。小さい方が過学習を防ぐ。open
subsample = 使用するサンプルの数 / 全てのサンプルの数
- colsample_bytree (1):1つの木を作成する際に使う特徴量の、全体の特徴量に対する割合。この値が1だと、作成される木が似通ってしまう。小さい方が過学習を防ぐ。open
colsample_bytree = 使用する特徴量の数 / 全ての特徴量の数
- tree_method (auto)
決定木の成長方法アルゴリズムの選択。
auto
,exact
,approx
,hist
,gup_hist
が選択可能。auto
: データが少ない時はexact
、多い時はapprox
を選択する。exact
(Exact greedy algorithm) : 全探索。approx
: Approximate greedy algorithmhist
: 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
等で使われる。