Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
勾配ブースティングについて調べてみた ~XGBoostの理論~
Search
NearMeの技術発表資料です
PRO
September 01, 2023
1
450
勾配ブースティングについて調べてみた ~XGBoostの理論~
NearMeの技術発表資料です
PRO
September 01, 2023
Tweet
Share
More Decks by NearMeの技術発表資料です
See All by NearMeの技術発表資料です
ルートの質を評価する指標について
nearme_tech
PRO
0
13
Rustで作る強化学習エージェント
nearme_tech
PRO
0
42
ビームサーチ
nearme_tech
PRO
0
36
WASM入門
nearme_tech
PRO
0
35
ESLintをもっと有効活用しよう
nearme_tech
PRO
0
25
リファクタリングのための第一歩
nearme_tech
PRO
0
68
ガウス過程回帰とベイズ最適化
nearme_tech
PRO
1
190
確率的プログラミング入門
nearme_tech
PRO
2
120
Observability and OpenTelemetry
nearme_tech
PRO
2
46
Featured
See All Featured
Docker and Python
trallard
44
3.3k
Code Reviewing Like a Champion
maltzj
521
39k
Typedesign – Prime Four
hannesfritz
41
2.5k
How GitHub (no longer) Works
holman
314
140k
Producing Creativity
orderedlist
PRO
344
40k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
A designer walks into a library…
pauljervisheath
205
24k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.2k
Java REST API Framework Comparison - PWX 2021
mraible
29
8.4k
Scaling GitHub
holman
459
140k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
4
380
Transcript
0 勾配ブースティングについて調べてみた ~ XGBoostの理論 ~ 2023-08-25 第57回NearMe技術勉強会 Mio Takakuwa
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
3 Gradient boosting decision tree(GBDT)とは 特徴量:(例) • 年齢:10才 • 性別:女
• 親の身長:160cm • 健康状態:良好 • 運動習慣:週2回 予測する値: 身長:136cm(実際) 決定木 性別 年齢<14 年齢<18 親の身長>178 推定値:130cm
4 Gradient boosting decision tree(GBDT)とは 特徴量:(例) • 年齢:10才 • 性別:女
• 親の身長:160cm • 健康状態:良好 • 運動習慣:週2回 予測する値: 身長:136cm(実際) ランダムフォレスト 推定値:130cm 推定値:133cm 推定値:135cm 平均して... 推定値:133cm
5 Gradient boosting decision tree(GBDT)とは 特徴量:(例) • 年齢:10才 • 性別:女
• 親の身長:160cm • 健康状態:良好 • 運動習慣:週2回 予測する値: 身長:136cm(実際) GBDT 推定値: 130cm 推定値: 135cm 正解はあと6cm 高いなー 推定値: 139cm 推定値: 136cm 正解はあと3cm 低いなー 当たった!
6 XGBoost:Gradient Tree Boosting
7 やりたいこと ・ ・ ・ t-1 個の モデル t 個目の
モデル (作成済み) (作りたい) 精度の高い t-1 個のモデル(決定木)を用いて、 実際の値と予測値の差が小さくなるような t 個目のモデルを作りたい 方針: t 個目のモデル決定時の 損失関数(実際の値と予測値のズレ) をt-1 個のモデル等を用いて表現し、 最小化する ・ ・
8 ツリーモデルの定義 ツリーアンサンブルモデル ツリーアンサンブルモデル(予測値)の出力 記号 https://xgboost.readthedocs.io/en/stable/tutorials/model.html
9 ツリーモデルの定義 ツリーアンサンブルモデル(予測値)の出力(前頁) 葉の index 1 2 3 4 葉の
出力値 w 1 w 2 w 3 ω 4 input x 0 qとωのイメージ output index:3 出力値:ω 3 ex. 記号
10 損失関数 λ=0なら従来の 勾配ブースティングと 同じらしい...
11 やりたいこと ・ ・ ・ t-1 個の モデル t 個目の
モデル (作成済み) (作りたい) 精度の高い t-1 個のモデル(決定木)を用いて、 実際の値と予測値の差が小さくなるような t 個目のモデルを作りたい 方針: t 個目のモデル決定時の 損失関数(実際の値と予測値のズレ) をt-1 個のモデル等を用いて表現し、 最小化する ・ ・ ・
12 t個目の損失関数の最小化 1項目に関して、2次のテイラー展開をすると、 ここで次のように表記する (決定木)を調節して、 損失関数を小さくしたい
13 t個目の損失関数の最小化 定数項は最小化に関係ないので無視 損失関数の定義 テイラー展開 (前ページ最後の式) この式の最小化のため、式を変形していく 決定木 葉の出力値
14 t個目の損失関数の最小化 葉のindex (j) 1 2 3 4 データの集合 I
1 I 2 I 3 I 4 葉の出力値 葉のindexがjの葉に入っているデータの集合を とする ex. 3番目の葉に x 2 ,x 5 , x 6 が 入っているなら、 I 3 = {2, 5, 6} ‥T ‥ x 1 ,x 3 x 4 x 7 ,x 9 x 12 x 2 ,x 5 x 6 x 8 ,x 10 x 11 x 1 ~ x 12
15 t個目の損失関数の最小化 全データ一度に足しあげる ↓ 葉の中の和を出した後、 それぞれを足す ツリーアンサンブル モデルの定義 葉の出力値の2乗和
16 のg i , h i は, (損失関数の1, 2次の勾配) t-1
個の決定木の結果(予測値)と実際の値から計算可能 t個目の損失関数の最小化 損失関数を最小にする t 個目の決定木の葉j が返すべき結果
17 XGBoostの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 boosting decision 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
19 Thank you