「確率的機械学習 入門編II」読書メモ一覧 - jiku log
はじめに
持橋大地・鈴木大慈 監訳「確率的機械学習 入門編II」は,世界的に評価の高いK.P.Murphy著 "Probabilistic Machine Learning (Book1)" の和訳であり,確率モデルに基づく機械学習,深層学習といった基礎が丁寧に整理されている。
本記事は,「第18章 木,森,バギング,ブースティング」における,ブースティングに関する読書メモである。
18.5 ブースティング
18.5.5 勾配ブースティング
前項で学んだアダブーストは,二値分類向けの手法であった。
個別の損失について,それぞれブースティングのアルゴリズムを導出するかわりに,様々な損失に適用できる一般的なアルゴリズムを導出できる。
これは,勾配ブースティング(gradient boosting)として知られる。
勾配ブースティングは,関数空間内における損失の最小化問題,すなわち
そのため,関数の訓練データ集合上の値
段目における
の勾配を
とすると,
そして,関数の更新は,以下で与えられる。
たとえば二乗損失の場合,損失関数の勾配の負値は
になる。
これは,関数に対して,固定した
個の学習データでのみ最適化をしているため,汎化できない。
そのため,勾配にマイナスをかけた値に弱学習器をフィットさせるようにアルゴリズムを修正する。
アルゴリズム全体は,下のようになる。ただしは学習率である。

データセットが巨大な場合,各繰り返しにおいて回帰木に適用する際に,データ集合全体のうち一部のデータを用いる。この手法を確率的勾配ブースティングと呼ぶ。
この手法は,高速であるだけでなく,サブサンプリングによってある種の正則化が働くため,汎化性能が向上する。
勾配木ブースティング
実用上は,勾配ブースティングは多くの場合,以下のような回帰木を弱学習器と仮定する。
このアルゴリズムは,勾配ブースト回帰木(gradient boosted regression tree)もしくは勾配木ブースティング(gradient tree boosting)と呼ばれる。
勾配木ブースティングでは,残差に対して標準的な回帰木の学習を行なう。その後,それぞれの葉節点における重みを以下のように計算する。
XGBoost
XGBoost(extreme gradient boosting)は,非常に効率的で広く用いられている勾配木ブースティングの実装である。
github.com
XGBoostでは,次の正則化項を加えた目的関数を最適化する。
ステップ目において損失関数は以下の通りになる。
この損失関数について2次のテイラー展開は以下の通りになる。ただしはヘシアンである。
●ブログ筆者註 :
通常のヘシアンは,
のように,2種類の変数によって微分される。
しかしXGBoostのヘシアン
は,2回微分であるにもかかわらず変数が1種類しか出てこない。
これは,XGBoostの損失関数が
ごとの総和になっており,ヘシアンの非対角成分が0になるためである。
回帰木の場合,弱学習器は「入力が所属する領域
における重み
」となる。よって,
また
これは,に関する二次形式であるので,最適な重みと損失は,それぞれ以下のようになる。
この目的関数を最適化するには,再帰的に節点を分割することによって行なう。
具体的には,葉節点を
と
の左右に分割するとき,この分割による利得(gain,損失関数の減少の度合い)は,
18.6 木のアンサンブルの解釈
18.6.1 特徴量重要度
木のアンサンブルにおける特徴量の重要度を考える。
1つの決定木について,特徴量
に関する特徴量重要度(feature importance)は,
アンサンブルにおける特徴量重要度は,すべての木について平均を取ることによって求められる。
MNISTの0と8をランダムフォレストによって分類する際の特徴量重要度を下図に表す。
「0」と「8」は,数字中央部分が異なっているので,その部分の特徴量重要度が大きくなっていることが分かる。

まとめと感想
今回は,「第18章 木,森,バギング,ブースティング」における,ブースティングについてまとめた。
分類問題において,非常によく用いられている手法である勾配ブースティングやXGBoostについて理解することができた。
勾配ブースティングは,「関数を用いて微分する」という,あまり見かけない演算をしているが,関数をあたかも変数のように扱えば,関数による勾配を考えられるという点はなかなか興味深かった。
XGBoostは,「目的関数に正則化項を加えて,ヘシアンを使って最適化する」という標準的な最適化を行なっているが,ヘシアンが対角行列になるというのが特徴的だった。
ヘシアンが対角行列になるため,最適な重みの導出が非常にシンプルになる。このような,計算が容易になるという性質が,XGBoostが有用である1つの理由だと思った。
本記事を最後まで読んでくださり,どうもありがとうございました。
参考サイト
- 確率的機械学習:入門編 II |朝倉書店
- 『確率的機械学習:入門編』サポートサイト
- 原著関連
- Probabilistic Machine Learning: An Introduction : 原著のサポートページ
- pyprobml/notebooks.md at auto_notebooks_md · probml/pyprobml · GitHub : 原著の図作成用Notebooks一覧