$30 off During Our Annual Pro Sale. View Details »

勾配ブースティングについて調べてみた ~XGBoostの理論~

勾配ブースティングについて調べてみた ~XGBoostの理論~

More Decks by NearMeの技術発表資料です

Transcript

  1. 0
    勾配ブースティングについて調べてみた
    ~ XGBoostの理論 ~
    2023-08-25 第57回NearMe技術勉強会
    Mio Takakuwa

    View Slide

  2. 1
    目次
    1. 勾配ブースティング木の概要
    2. XGBoostの理論

    View Slide

  3. 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

    View Slide

  4. 3
    Gradient boosting decision tree(GBDT)とは
    特徴量:(例)
    ● 年齢:10才
    ● 性別:女
    ● 親の身長:160cm
    ● 健康状態:良好
    ● 運動習慣:週2回
    予測する値:
    身長:136cm(実際)
    決定木
    性別
    年齢<14 年齢<18
    親の身長>178
    推定値:130cm

    View Slide

  5. 4
    Gradient boosting decision tree(GBDT)とは
    特徴量:(例)
    ● 年齢:10才
    ● 性別:女
    ● 親の身長:160cm
    ● 健康状態:良好
    ● 運動習慣:週2回
    予測する値:
    身長:136cm(実際)
    ランダムフォレスト
    推定値:130cm 推定値:133cm 推定値:135cm
    平均して... 推定値:133cm

    View Slide

  6. 5
    Gradient boosting decision tree(GBDT)とは
    特徴量:(例)
    ● 年齢:10才
    ● 性別:女
    ● 親の身長:160cm
    ● 健康状態:良好
    ● 運動習慣:週2回
    予測する値:
    身長:136cm(実際)
    GBDT
    推定値:
    130cm
    推定値:
    135cm
    正解はあと6cm
    高いなー
    推定値:
    139cm
    推定値:
    136cm
    正解はあと3cm
    低いなー
    当たった!

    View Slide

  7. 6
    XGBoost:Gradient Tree Boosting

    View Slide

  8. 7
    やりたいこと



    t-1 個の
    モデル
    t 個目の
    モデル
    (作成済み)
    (作りたい)
    精度の高い
    t-1 個のモデル(決定木)を用いて、
    実際の値と予測値の差が小さくなるような
    t 個目のモデルを作りたい
    方針:
    t 個目のモデル決定時の
    損失関数(実際の値と予測値のズレ)
    をt-1 個のモデル等を用いて表現し、
    最小化する


    View Slide

  9. 8
    ツリーモデルの定義
    ツリーアンサンブルモデル
    ツリーアンサンブルモデル(予測値)の出力
    記号
    https://xgboost.readthedocs.io/en/stable/tutorials/model.html

    View Slide

  10. 9
    ツリーモデルの定義
    ツリーアンサンブルモデル(予測値)の出力(前頁)
    葉の
    index
    1 2 3 4
    葉の
    出力値
    w
    1
    w
    2
    w
    3
    ω
    4
    input
    x
    0
     
    qとωのイメージ
    output
    index:3
    出力値:ω
    3
    ex.
    記号

    View Slide

  11. 10
    損失関数
    λ=0なら従来の
    勾配ブースティングと
    同じらしい...

    View Slide

  12. 11
    やりたいこと



    t-1 個の
    モデル
    t 個目の
    モデル
    (作成済み)
    (作りたい)
    精度の高い
    t-1 個のモデル(決定木)を用いて、
    実際の値と予測値の差が小さくなるような
    t 個目のモデルを作りたい
    方針:
    t 個目のモデル決定時の
    損失関数(実際の値と予測値のズレ)
    をt-1 個のモデル等を用いて表現し、
    最小化する



    View Slide

  13. 12
    t個目の損失関数の最小化
    1項目に関して、2次のテイラー展開をすると、
    ここで次のように表記する
      (決定木)を調節して、
    損失関数を小さくしたい

    View Slide

  14. 13
    t個目の損失関数の最小化
    定数項は最小化に関係ないので無視
    損失関数の定義
    テイラー展開
    (前ページ最後の式)
    この式の最小化のため、式を変形していく
    決定木 葉の出力値

    View Slide

  15. 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

    View Slide

  16. 15
    t個目の損失関数の最小化
    全データ一度に足しあげる

    葉の中の和を出した後、
    それぞれを足す
    ツリーアンサンブル
    モデルの定義
    葉の出力値の2乗和

    View Slide

  17. 16
    のg
    i
    , h
    i
    は,
    (損失関数の1, 2次の勾配)
    t-1 個の決定木の結果(予測値)と実際の値から計算可能
    t個目の損失関数の最小化
    損失関数を最小にする
    t 個目の決定木の葉j が返すべき結果

    View Slide

  18. 17
    XGBoostのGBDT | やりたいこと



    t-1 個の
    モデル
    t 個目の
    モデル
    (作成済み)
    (作りたい)
    精度の高い
    t-1 個のモデル(決定木)を用いて、
    実際の値と予測値の差が小さくなるような
    t 個目のモデルを作りたい


    木の構造q(x)が固定の場合:
    XGBoostの最適解の近似値

    View Slide

  19. 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

    View Slide

  20. 19
    Thank you

    View Slide