jiku log

データサイエンスの核心を掴む : 学びと発見の記録

「確率的機械学習 入門編II」を読む ~第18章 木,森,バギング,ブースティング ③ブースティング・その1~

「確率的機械学習 入門編II」読書メモ一覧 - jiku log

はじめに

持橋大地・鈴木大慈 監訳「確率的機械学習 入門編II」は,世界的に評価の高いK.P.Murphy著 "Probabilistic Machine Learning (Book1)" の和訳であり,確率モデルに基づく機械学習,深層学習といった基礎が丁寧に整理されている。

本記事は,「第18章 木,森,バギング,ブースティング」における,ブースティングに関する読書メモである。

18.5 ブースティング

木のアンサンブルは,


 \begin{align}
f(\mathbfit{x} ; \mathbfit{\theta}) = \sum_{m=1}^M \beta_m F_m(\mathbfit{x} ; \mathbfit{\theta}_m) \\ \\
\end{align}
という形をしている。

ブースティング(boosting)は,逐次的に加法的モデルをフィットさせる手法である。
それぞれのモデル F_mが二値分類器であるとして,

  •  F_1を学習データにフィットさせる。
  •  F_1の分類器によるエラーの分だけ重みを付ける(誤ったら重みを大きくする)。
  •  F_2は,重み付きデータにフィットさせる。
  • このような手続きを M回繰り返す。

という手順で行なう。

下図に,スパム電子メールデータセットの分類問題の例を示す。
横軸は用いた木の本数,縦軸はテストデータの予測誤差である。手法は,バギング・ランダムフォレスト・ブースティングを使用している。
これらの手法のうち,ブースティングが最もテスト誤差が小さい。

予測誤差とアンサンブル手法の比較

18.5.1 段階的加法モデル

本項では,段階的加法モデル(forward stagewise additive model)を導入する。

これは m段目において,


 \begin{align}
(\beta_m, \mathbfit{\theta}_m) = \operatorname*{argmin}_{\beta, \mathbfit{\theta}} \sum_{n=1}^N l(y_i, f_{m-1}(\mathbfit{x}_i) + \beta F(\mathbfit{x}_i ; \mathbfit{\theta})) \\ \\
\end{align}
という最適化を行なう。
このとき損失は,1つ前で得られた分類器 f_{m-1}(\mathbfit{x})と,新たに加えた分類器 F(\mathbfit{x}_i; \mathbfit{\theta})によって計算される。

また, f_mは以下のように定める。


 \begin{align}
f_m(\mathbfit{x}) = f_{m-1}(\mathbfit{x}) + \beta_m F(\mathbfit{x}; \mathbfit{\theta}_m) = f_{m-1}(\mathbfit{x}) + \beta_m F_m(\mathbfit{x}) \\ \\
\end{align}
このように, mよりも前に得られている加法モデルのパラメータについては動かさないことが重要である。

18.5.2 二乗損失と最小二乗ブースティング

本項では,回帰問題の損失 l(y, \hat{y}) = (y - \hat{y})^2で与えられる損失について考える。

データ iに対応する m段目の損失関数は次の通りとなる。


 \begin{align}
l(y_i, f_{m-1}(\mathbfit{x}_i) + \beta F(\mathbfit{x}_i ; \mathbfit{\theta}))
&= (y_i - f_{m-1}(\mathbfit{x}_i) - \beta F(\mathbfit{x}_i ; \mathbfit{\theta}))^2 \\ \\
&= (r_{im} - \beta F(\mathbfit{x}_i ; \mathbfit{\theta}))^2 \\ \\
\end{align}
この式からブースティングでは,残差 r_{im} = y_i - f_{m-1}(\mathbfit{x}_i)に対してフィッティングしていることが分かる。
この方法は,最小二乗ブースティングと呼ばれる。

下図に,ブースティングによる回帰を行なった例を示す。左側が残差,右側が予測結果を示す。
図に示すように,残差が徐々に低減されて言っていることが分かる。

アンサンブルによる残差(左)と予測(右)

18.5.3 指数損失とアダブースト

二値分類,すなわち \tilde{y}_i \in \{ -1, 1 \}の予測を行なうことを考える。

指数損失

弱学習器は,以下の予測の計算を行なうとする。


 \begin{align}
p(y=1 \mid \mathbfit{x}) = \frac{e^{F(\mathbfit{x})}}{ e^{-F(\mathbfit{x})} + e^{F(\mathbfit{x})}} 
= \frac{1}{1 + e^{-2F(\mathbfit{x})}} \\ \\
\end{align}

この式より,負の対数尤度は以下のようになる。


 \begin{align}
l(\tilde{y}, F(\mathbfit{x})) = \log (1 + e^{-2\tilde{y} F(\mathbfit{x})}) \\ \\
\end{align}

また,別の損失として,指数損失を考えることもできる。


 \begin{align}
l(\tilde{y}, F(\mathbfit{x})) = \exp (-\tilde{y} F(\mathbfit{x})) \\ \\
\end{align}


対数損失・指数損失を含む各種損失を下図に示す。縦軸は損失の大きさ,横軸はマージン m(\mathbfit{x}) = \tilde{y} F(\mathbfit{x})である。
対数損失も指数損失も,既に正しく分類できている領域(マージンが正の領域)は損失が小さいことがわかる。

対数損失・指数損失を含む各種の損失


ブースティングにおいては,指数損失の方が最適化しやすい。

アダブースト

指数損失を使った場合,二値分類のラベルを返すアルゴリズムは離散アダブースト,確率値を返すようなアルゴリズムは実数アダブーストと呼ばれる。

実数アダブーストにおける損失関数は以下のようになる。


 \begin{align}
L_m(F) = \sum_{i=1}^N \exp [ -\tilde{y}_i (f_{m-1}(\mathbfit{x}) + \beta F(\mathbfit{x}_i) ) ]
= \sum_{i=1}^N \omega_{i,m} \exp(- \beta \tilde{y}_i F(\mathbfit{x}_i)) \\ \\
\end{align}
このように,前ステップの学習時の指数損失 \omega_{i,m} = \exp(-\tilde{y}_i f_{m-1}(\mathbfit{x}_i) )によって重みづけられていることが分かる。
また誤分類されたデータの重みは,指数的に大きくなる。

二値分類向けのアルゴリズムはアダブーストM1(Adaboost.M1)と呼ばれ,以下のようなアルゴリズムになる。

なお,多値分類に拡張したアルゴリズムは,SAMMEと呼ばれている。

18.5.4 ロジットブースト

指数損失を用いる場合,誤分類された学習データに大きな重みを与える。そのため,誤ってラベル付けされた外れ値には非常に敏感になる。

そのため,指数損失ではなく対数損失を用いる方法が提案されており,この手法はロジットブーストと呼ばれる。
ロジットブーストにおける損失は,以下のようになる。


 \begin{align}
L_m(F) = \sum_{i=1}^N \log [ 1 + \exp( -2 \tilde{y}_i (f_{m-1}(\mathbfit{x}) + F(\mathbfit{x}_i) ) ) ] \\ \\
\end{align}

まとめと感想

今回は,「第18章 木,森,バギング,ブースティング」における,ブースティングについてまとめた。


ブースティングは,単に弱学習器の多数決を取るのではなく,誤ったところを重点的に改善していくという点が,なかなか興味深かった。
人間の場合でも,資格試験の勉強をしているときに,誤った箇所を重点的に復習するため,とても理にかなった考え方だと感じた。

またアダブーストの場合,指数損失を用いているというのが特徴的だった。外れ値に対して敏感になるという弱点があるにせよ,計算が楽になるというのは実装上のメリットである。
損失関数についても,問題に応じて適切なものを選べるようにしたい。


本記事を最後まで読んでくださり,どうもありがとうございました。