Slide 1

Slide 1 text

XGBoost State Of The Art Algorithm Maxwell_110

Slide 2

Slide 2 text

1. XGBoost とは? 2. XGBoost へ至るまで・・・ ( Adaboost -> Gradient Boost -> XGBoost ) 3. XGBoost 再訪 4. Demo in R

Slide 3

Slide 3 text

1. XGBoost とは? 2. XGBoost へ至るまで・・・ (Adaboost -> Gradient Boost -> XGBoost) 3. XGBoost 再訪 4. Demo in R

Slide 4

Slide 4 text

XGBoost とは? 「 Boosting Tree algorithm 」の一種で, Kaggleで現在(2018年時点)最も使われているモデルの1 つ. 構造化データに対して,最高峰の精度を誇り, 計算速度をあげるべく色々な工夫が施されている. 開発元は、DMLC (Distributed Machine Learning Community) https://github.com/dmlc

Slide 5

Slide 5 text

DMLC Associate Professor of Washington Univ in CS Ph.D. student of Washington Univ in CS

Slide 6

Slide 6 text

Main developer 後程,XGBoost のアルゴリズムに関してお話をしますが, 基本的には,Chen 氏の著名な論文である 「 XGBoost : A Scalable Tree Boosintg System 」 をもとにしています Arxiv: https://arxiv.org/abs/1603.02754

Slide 7

Slide 7 text

Github: https://github.com/dmlc/xgboost R package Python package 是非,使ってみましょう! R や Python 用の wrapper package が提 供されている C ++ などの開発言語に不慣れでも 安心して使用することができる R であれば > install.packages('xgboost') で一発でインストール可能

Slide 8

Slide 8 text

1. XGBoost とは? 2. XGBoost へ至るまで・・・ (Adaboost -> Gradient Boost -> XGBoost) 3. XGBoost 再訪 4. Demo in R

Slide 9

Slide 9 text

本題に入るその前に・・・ 後の理解のために 「 3 つ の 基礎知識 」 を確認しておきましょう

Slide 10

Slide 10 text

y = 0.3x4 − 1.5x3 + 1.2x2 + 1.5xで表される多項式にガウシアンノイズを加えた後, サンプリングしたデータに対し,多項式をフィッティングすることを考える 多項式の最大の次数は 4 次であるが,正解の式を知らない場合,その次数も含めて推定 しなければならない(高次の方が表現力が高く,あてはまりはよくなる) Gaussian Noise ( ~ N(0, 0.72) ) を付加 最大次数が 3, 4, 6, 9 次 とした場合に, 各フィッティング結果を「学習データ」と「検証データ」の両方に対して検証

Slide 11

Slide 11 text

基礎知識 1: Bias と Variance モデルの学習(フィッティング)において 期待二乗損失関数 L を使用し多項式の係数を求めるとすると, L = y x − t 2 p x, t dx dt この期待二乗損失関数は,以下の形に分解できる L = ED y x; D − h x 2 p x dx + ED y x; D − ED y x;D 2 p x dx + h x − t 2p x, t dx dt 1 2 3 bias2 variance noise 但し,この式における ED ∙ とは, データの取り方 D に関して期待値をとったもの x : 特徴量 t : 目的変数 y(x) : モデルによる予測値 p(x, t) : 特徴量と目的変数の同時分布 h(x) : 理想的な回帰関数(最良の予測,神業的予測) データの取り方に対しての予測値の期待 値が,理想的な予測値からどれだけ乖離 しているかを表したもの 各データの取り方に対しての予測値 が, 期待値からどれだけ変動するかを表し たもの 予測したい事象に含まれる本質的なノ イズで,理想的なモデルでも除去しき れない誤差 1 2 3

Slide 12

Slide 12 text

bias^2 variance poly 3 0.0463 0.0019 poly 4 0.0003 0.0019 poly 6 0.0003 0.0028 poly 9 0.0005 0.0041 bias と variance モデルの自由度(表現 力)が高くなると, bias が低くなり, variance が大きくなる bias と variance を バランスよく小さくす るモデル が予測性能の 意味で最適なモデル (testの結果が良い)

Slide 13

Slide 13 text

1. MSEでみると,学習データ( train )では,9 次の多項式のあてはまり具合が一番良い 2. しかし,検証データ( test )では,正解である 4 次の多項式が一番良い この時,6 次と 9 次の多項式は,「 過学習している 」ことになる 基礎知識 2: 過学習(Overfitting)

Slide 14

Slide 14 text

2 次の正則化項(penalty function)を加えた評価関数で, 各多項式の学習データに対する当てはまり具合をみてみると, 4 次の多項式のあてはまり具合が一番良くなっている! 結果として,4 次の多項式を一番良いモデルとして選択ができる. 正則化による過学習抑制の典型例

Slide 15

Slide 15 text

基礎知識 3: 決定木(Decision Tree) 二値分類: ▲ と ■ を X1 と X2 で分類するタスク X 1 >= 10 X 1 < 10 X 2 <= 7 X 2 > 7 Train ACC : 95% 8 5 1 6 5 0 1 14 予測 観測 X 1 10 7 : 6 : 14 X 2 ( X 1 , X 2 ) = ( 3.9, 9.1 ) 過学習していない木 (深さ 2) X 1 <= 4 X 1 > 4 3 1 3 X 2 <= 9 X 2 > 9 1 1 2 X 2 <= 10 X 2 > 10 1 1 過学習した木 (深さ 5) 6 0 0 14 予測 観測 Train ACC : 100%  非線形な境界を描くように特徴量をあつかえる  際限なく深い木にすることで,学習データに対し て 100% の精度にすることができるが,過学習す ることが多い(例: 右図深さ5の場合) 決定木は学習データに対する精度を幾らでも 良くすることができるため,バイアスは低い が,バリアンスは大きい 9 10

Slide 16

Slide 16 text

本題に・・・

Slide 17

Slide 17 text

コミッティ(committee) 複数のモデルを何らかの方法で組み合わ せることにより,単一のモデルを利用す る場合よりも性能を改善すること  バギング( Bagging )  ブースティング( Boosting )

Slide 18

Slide 18 text

X から y を予測(分類・回帰)する問題に対して,データを M 通 りサンプリング(ブートストラップ)し,それぞれに対して同一の モデル(例えば,決定木)をあてはめることを考える M : モデルの数(ブートストラップの回数) ym (X) : 各モデル(弱学習器と呼ぶ)の予測関数 h(X) : 予測しようとする事象に対する最適な「真の予測関数」 εm (X) : モデルが正確でないことに起因する誤差関数 yM X = 1 M m=1 M ym (X) ym X = h X + εm (X) Breiman L. Bagging predictors. Mach Learn. 1996;24:123–40. Prediction: yM X Bootstrap 弱学習器 week learner Raw Training Data Sampled Data Bagging(Bootstrap aggregating)

Slide 19

Slide 19 text

E ym X − h(X) 2 = V εm X = σ2 V yM X = 1 M2 m=1 M V εm X = σ2 M < σ2 ここで,簡単のために,誤差の平均が 0,分散が同一値(σ2)かつ互いに無 相関であるとすれば,入力データ X の分布に対する期待二乗和誤差に対して, となる( 但し,E[ ] はデータXの分布に対しての期待値 ) このことは,複数の弱学習器の予測値を平均することで予測値のばらつきを低減できる ことを表している 但し,上記は,モデルの誤差が無相関であるこということを仮定しているため, 厳密にはなりたたない(似たようなモデル間の誤差には必ず相関がある). そのため,上記ほどには予測値の平均のばらつきを低減することはできない. とはいえ,baggingを行うことで一定の効果が得られるは保証されている. yM X = 1 M m=1 M ym (X) ym X = h X + εm (X) 前頁の式をもう一度書くと・・・ であった

Slide 20

Slide 20 text

Random Forest 1. 弱学習器として,複雑な相互作用関係をとらえることのできる決定木を採用 バイアスは小さいが、バリアンスが大きい決定木をbaggingすることで,精度の向上が期待でき る.過学習は木の成長のさせ方などでも抑制 2. 各決定木の学習の際,元データからbootstrapping(復元抽出)で学習用データをサンプリングし, これを使って決定木の学習を行う 3. 学習させた複数個( 一般的には,数百 ~ 数千個 )の決定木の予測値を平均したものを予測値とす る 4. 決定木における枝分かれの際に,全ての特徴量を使用するのではなく,全特徴量の一部をランダム サンプルし,枝の分岐に使用する これにより,各決定木間の相関を低減させることができ,予測値(各決定木の平均)の分散の低減 を可能にしている 5. 以上は,最もベーシックな Random Forest の特徴だが,これら以外にも色々な工夫が施された亜 種がたくさん存在する e.g. Extremely Randomized Forest: https://scikit-learn.org/stable/modules/ensemble.html#extremely-randomized-trees Breiman L. Random Forests. Machine Learning. 2001;45:5–32.

Slide 21

Slide 21 text

~ 1997 ~ 2000 ~ 2006 ~ 2016 ~ 2019 AdaBoost. M1 (Classification task) AdaBoost. M1 (Regression task) Gradient Boosting Tree Extreme Gradient Boosting What’s Next? Timeline of Boosting LightGBM CatBoost ここでは,XGBoost に至るまでの Boosting の開発の流 れをアルゴリズムの視 点で追いかける

Slide 22

Slide 22 text

AdaBoost ( AdaBoost.M1 ) 分類問題: Freund Y, Schapire RE. A Decision-Theoretic Generalization of On-Line Learning and an Application to Boosting. Journal of Computer and System Sciences. 1997;55:119–39. 回帰問題: Friedman JH. Greedy Function Approximation: A Gradient Boosting Machine. The Annals of Statistics. 2001;29:1189–232. yM (X) = 1 M m=1 M ym (X) ym X = h X + εm (X) yM (X) = m=1 M ωm Zm (X) Zm X = h X + εm (X) Random Forest AdaBoost. M1 1. 各弱学習器に対して重みが異なる! 2. 各弱学習器の学習は独立には行われず,連続的に行われる点がRandom Forestと大きく異なる

Slide 23

Slide 23 text

データは n = 1, … , N 個あり,それぞれが重み係数 ωn をもつ 弱学習器である決定木は m = 1, … , M 個あり,m + 1 番目 の決定木は m 番目の学習が終わってから,学習を開始する ことになる.各弱学習器は,最終予測値にそれぞれ αm の 重みで寄与する. 2-class分類問題で,クラスのラベルは tn = −1 or 1 次頁の内容の前提 ※・・・決定木の分割の仕方などのお話は しません.右のカステラなどを参考にして ください. カステラって,英語では Castellaって書くらしいよ!

Slide 24

Slide 24 text

1. n = 1, … , N のデータの重み ωn の初期化 ωn (1) = 1 N ( 上添え字 (1) は最初の決定木であることを示す) 2. m = 1, … , M について以下を「順に」行う ( a ) 弱学習器 Zm (X) を誤差関数 Jm を 最小化するようにフィッティング Jm = n=1 N ωn (m) I Zm (Xn ) ≠ tn I Zm (Xn ) ≠ tn は指示関数 括弧内が成立する時に 1,それ以外では 0 3. ( b ) m 番目の学習器の重み αm を求める εm = Jm n=1 N ωn (m) αm = ln 1−εm εm ( c ) データ点の重み係数を更新する ωn (m+1) = ωn (m)exp αm I Zm (Xn ) ≠ tn 4. 左図の下式で最終モデルの予測を計算する データ n の重みは ωn ωn (1) ωn (2) ωn (3) ωn (M) Z1 (X) Z2 (X) Z3 (X) ZM (X) YM X = sign m=1 M αm Zm (X) AdaBoost. M1 のアルゴリズム 1 2 3 M α1 α2 α3 prediction

Slide 25

Slide 25 text

AdaBoost .M1 のアルゴリズム : 補足 1. AdaBoost. M1 アルゴリズムは, より一般的な「前向き段階的加法的モデリング」の一例として考えることができる 2. 「前向き段階的加法的モデリング」とは m 番目の弱学習器(木) Zm (X) とその木の重み βm を更新する際に Zm X , βm = argmin n=1 N L tn , fm−1 X + β Z X β Z X : m 番目の決定木の予測値 L . : 損失関数 fm−1 (X) : fm−1 (X) = i=1 m−1 βi Zi (X) としたもの 3. AdaBoost .M1 は,損失関数として指数損失を用いたものと等価(αm = 2βm ) 4. 回帰問題に対しては,例えば二乗誤差などが考えられる 𝑍 𝑋 , 𝛽

Slide 26

Slide 26 text

Gradient Boosting Tree (AdaBoost からの改良点の要点のみ記した) 1. 損失関数 𝐿 ∙ が微分可能である時 𝐿 𝑡𝑖 , 𝑓𝑚 𝑋𝑖 = 𝐿 𝑡𝑖 , 𝑓𝑚−1 𝑋𝑖 + 𝜕 𝐿 𝑡𝑖 , 𝑓𝑚−1 𝑋𝑖 𝜕 𝑓𝑚−1 𝑋𝑖 𝑓𝑚 𝑋𝑖 − 𝑓𝑚−1 𝑋𝑖 と近似できることを利用して, 損失関数の 𝑚 − 1 時点における 𝑖 = 1, … , 𝑁 の各データ点の負の勾配値 −𝑔𝑖𝑚 = − 𝜕 𝐿 𝑡𝑖 , 𝑓𝑚−1 𝑋𝑖 𝜕 𝑓𝑚−1 𝑋𝑖 に 𝑚 番目の決定木の予測値が近づくように 時点 𝑚 における決定木の構造(分割点、分割終端ノードの各予測値)を決める 2. 例えば,損失関数 𝐿 ∙ が 最小二乗損失 である時, −𝑔𝑖𝑚 = − 𝜕 𝐿 𝑡𝑖 , 𝑓𝑚−1 𝑋𝑖 𝜕 𝑓𝑚−1 𝑋𝑖 = − 𝜕 1 2 𝑡𝑖 − 𝑓𝑚−1 𝑋𝑖 2 𝜕 𝑓𝑚−1 𝑋𝑖 = 𝑡𝑖 − 𝑓𝑚−1 𝑋𝑖 と,𝑚 − 1 時点での残差というシンプルな形になっている. つまり,𝑚 番目の決定木の予測値はこの残差に近づければよい. 𝑓 𝑚 ∙ の定義は前頁参照

Slide 27

Slide 27 text

1. XGBoost とは? 2. XGBoost へ至るまで・・・ (Adaboost -> Gradient Boost -> XGBoost) 3. XGBoost 再訪 4. Demo in R

Slide 28

Slide 28 text

Extreme Gradient Boosting (GBTからの改良点の要点のみを記した) 1. 損失関数に正則化項を付加 下式の「前向き段階的加法的モデリング」を少し修正する Tm = argmin T n=1 N L tn , fm−1 X + T (但し,T は決定木の予測値) ここで,損失関数 L . を下記のように 正則化項 Ω T を含むように変更する n=1 N L tn , fm−1 X + Tm X + m=1 M Ω (Tm ) 正則化項 Ω T は決定木の構造に関連した L1 及び L2 正則化項をもつ 正則化項の採用により過学習を抑制

Slide 29

Slide 29 text

2. 勾配に加えてヘッシアン(2階微分)を考慮 GBM の時に考えた損失関数の展開形式を少し修正すると L ti , fm Xi = L ti , fm−1 Xi + 𝜕 L ti , fm−1 Xi 𝜕 fm−1 Xi fm Xi − fm−1 Xi + 1 2 𝜕2 L ti , fm−1 Xi 𝜕 fm−1 Xi 2 fm Xi − fm−1 Xi 2 と 2 次の項まで含めた式に修正できる これに前頁の正則化項を加えて,m 番目の決定木の構造を最適化す るための目標値を計算する ヘッシアンを含めた最適化により 計算速度が向上

Slide 30

Slide 30 text

3. 決定木の分割時における分割候補点の探索アルゴリズムの改善 4. 欠損値・疎なデータに対する効率的な決定木におけるルーティ ング(どのノードにデータ点が分配されるかを効率的に計算) より詳しい内容を知りた い方は元論文を読むこと をお勧めします Chen T, Guestrin C. XGBoost: A Scalable Tree Boosting System. In: Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. 2016. p. 785–94. http://arxiv.org/abs/1603.02754

Slide 31

Slide 31 text

1. XGBoost とは? 2. XGBoost へ至るまで・・・ (Adaboost -> Gradient Boost -> XGBoost) 3. XGBoost 再訪 4. Demo in R

Slide 32

Slide 32 text

No content