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
520
勾配ブースティングについて調べてみた ~XGBoostの理論~
NearMeの技術発表資料です
PRO
September 01, 2023
Tweet
Share
More Decks by NearMeの技術発表資料です
See All by NearMeの技術発表資料です
希望休勤務を考慮したシフト作成
nearme_tech
PRO
0
2
Hub Labeling による高速経路探索
nearme_tech
PRO
0
45
Build an AI agent with Mastra
nearme_tech
PRO
0
27
Rustで強化学習アルゴリズムを実装する vol3
nearme_tech
PRO
0
23
Webアプリケーションにおけるクラスの設計再入門
nearme_tech
PRO
1
65
AIエージェント for 予約フォーム
nearme_tech
PRO
2
130
ULID生成速度を40倍にしたった
nearme_tech
PRO
2
45
Amazon AuroraとMongoDBの アーキテクチャを比較してみたら 結構違った件について
nearme_tech
PRO
0
21
GitHub Custom Actionのレシピ
nearme_tech
PRO
0
15
Featured
See All Featured
Designing for Performance
lara
609
69k
A better future with KSS
kneath
239
17k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
Side Projects
sachag
455
42k
The Pragmatic Product Professional
lauravandoore
35
6.7k
Designing Experiences People Love
moore
142
24k
[RailsConf 2023] Rails as a piece of cake
palkan
55
5.6k
Building a Modern Day E-commerce SEO Strategy
aleyda
41
7.3k
Scaling GitHub
holman
459
140k
Building an army of robots
kneath
306
45k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Faster Mobile Websites
deanohume
307
31k
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