0勾配ブースティングについて調べてみた~ XGBoostの理論 ~2023-08-25 第57回NearMe技術勉強会Mio Takakuwa
View Slide
1目次1. 勾配ブースティング木の概要2. XGBoostの理論
2勾配ブースティング決定木とはGradient boosting decision tree(GBDT)有名なフレームワーク○ XGBoost (2014):eXtreme Gradient Boosting(全ての葉を分岐)○ LightGBM(2016):Light Gradient Boosting Machine(情報利得が大きいものだけ分岐)決定木 + アンサンブル学習 + 勾配降下法https://lightgbm.readthedocs.io/en/stable/Features.html
3Gradient boosting decision tree(GBDT)とは特徴量:(例)● 年齢:10才● 性別:女● 親の身長:160cm● 健康状態:良好● 運動習慣:週2回予測する値:身長:136cm(実際)決定木性別年齢<14 年齢<18親の身長>178推定値:130cm
4Gradient boosting decision tree(GBDT)とは特徴量:(例)● 年齢:10才● 性別:女● 親の身長:160cm● 健康状態:良好● 運動習慣:週2回予測する値:身長:136cm(実際)ランダムフォレスト推定値:130cm 推定値:133cm 推定値:135cm平均して... 推定値:133cm
5Gradient boosting decision tree(GBDT)とは特徴量:(例)● 年齢:10才● 性別:女● 親の身長:160cm● 健康状態:良好● 運動習慣:週2回予測する値:身長:136cm(実際)GBDT推定値:130cm推定値:135cm正解はあと6cm高いなー推定値:139cm推定値:136cm正解はあと3cm低いなー当たった!
6XGBoost:Gradient Tree Boosting
7やりたいこと・・・t-1 個のモデルt 個目のモデル(作成済み)(作りたい)精度の高いt-1 個のモデル(決定木)を用いて、実際の値と予測値の差が小さくなるようなt 個目のモデルを作りたい方針:t 個目のモデル決定時の損失関数(実際の値と予測値のズレ)をt-1 個のモデル等を用いて表現し、最小化する・・
8ツリーモデルの定義ツリーアンサンブルモデルツリーアンサンブルモデル(予測値)の出力記号https://xgboost.readthedocs.io/en/stable/tutorials/model.html
9ツリーモデルの定義ツリーアンサンブルモデル(予測値)の出力(前頁)葉のindex1 2 3 4葉の出力値w1w2w3ω4inputx0 qとωのイメージoutputindex:3出力値:ω3ex.記号
10損失関数λ=0なら従来の勾配ブースティングと同じらしい...
11やりたいこと・・・t-1 個のモデルt 個目のモデル(作成済み)(作りたい)精度の高いt-1 個のモデル(決定木)を用いて、実際の値と予測値の差が小さくなるようなt 個目のモデルを作りたい方針:t 個目のモデル決定時の損失関数(実際の値と予測値のズレ)をt-1 個のモデル等を用いて表現し、最小化する・・・
12t個目の損失関数の最小化1項目に関して、2次のテイラー展開をすると、ここで次のように表記する (決定木)を調節して、損失関数を小さくしたい
13t個目の損失関数の最小化定数項は最小化に関係ないので無視損失関数の定義テイラー展開(前ページ最後の式)この式の最小化のため、式を変形していく決定木 葉の出力値
14t個目の損失関数の最小化葉のindex (j) 1 2 3 4データの集合 I1I2I3I4葉の出力値葉のindexがjの葉に入っているデータの集合を とするex.3番目の葉に x2,x5, x6が入っているなら、I3= {2, 5, 6}‥T‥x1,x3x4x7,x9x12x2,x5x6x8,x10x11x1~ x12
15t個目の損失関数の最小化全データ一度に足しあげる↓葉の中の和を出した後、それぞれを足すツリーアンサンブルモデルの定義葉の出力値の2乗和
16のgi, hiは,(損失関数の1, 2次の勾配)t-1 個の決定木の結果(予測値)と実際の値から計算可能t個目の損失関数の最小化損失関数を最小にするt 個目の決定木の葉j が返すべき結果
17XGBoostのGBDT | やりたいこと・・・t-1 個のモデルt 個目のモデル(作成済み)(作りたい)精度の高いt-1 個のモデル(決定木)を用いて、実際の値と予測値の差が小さくなるようなt 個目のモデルを作りたい・・木の構造q(x)が固定の場合:XGBoostの最適解の近似値
18参考文献● LightGBM documentation: https://lightgbm.readthedocs.io/en/stable/● LightGBMの論文:Guolin Ke et al., “LightGBM: a highly efficient gradient boostingdecision tree”, 2017, (https://dl.acm.org/doi/10.5555/3294996.3295074)● XGBoostのdocumentation:https://xgboost.readthedocs.io/en/stable/tutorials/model.html● XGBoostの論文:Tianqi Chen et al. “XGBoost: A Scalable Tree Boosting System”https://arxiv.org/abs/1603.02754● 参考になる記事○ https://kefism.hatenablog.com/entry/2017/06/11/182959○ https://qiita.com/kenmatsu4/items/226f926d87de86c28089○ https://qiita.com/triwave33/items/aad60f25485a4595b5c8
19Thank you