データサイエンスにおけるバッグイングとブースティング
用語
- (主にデータサイエンスで) ブートストラップbootstrapとは、既に与えられたデータセットから一部を復元抽出してデータセットの数自体を増やす手法に関連する。
- バギングbaggingとは ブートストラップ・アグリゲーションbootstrap aggregatingの略で、複数のモデルを作成し、それらの合算により最終モデルを作る方法である。
- ブースティングboostingとは、複数回モデルを生成し、予測性能が低かったデータに対してより大きな重みを与えて弱点を補う最終モデルを作る方法である。
説明
直観的に見ると、バギングは並列的であり、ブースティングは直列的である。
インターネット上にはバギングとブースティングを図や例で説明した資料が溢れているが、数式に親しんでいる人にはこのポストで参照した論文の方が好ましいだろう1。‘学習’が起こる総試行回数を $T$、そのたびに $N$ 個のデータポイントのうち $n$ 個のサブデータセットを復元抽出し、回帰問題または分類問題を解くモデルを $f^{(t)}$ と表す。$\left\{ f^{(t)} \right\}_{t=1}^{T}$ は全データより少ないデータで学習したため一種の弱学習器weak modelとして扱われることがある。
バギング
$t = 1 , \cdots , T$ 回ごとに $n$ 個のデータポイントを復元抽出し、それぞれでモデルを学習させて $f^{(1)} , \cdots , f^{(T)}$ を得る。これらは互いに独立であるため、複数の装置で同時に学習させることができ、互いの欠けている部分をテストデータとして用いることで交差検証が容易である。
ブースティング
$t$ 回目の試行で $N$ 個のデータポイントが重みのベクトル $w^{(t)} = (w^{(t)}_{1}, \cdots , w^{(t)}_{N})$ に比例してサンプリングされる。最初はすべてのデータポイントの重みを等しく $w_{k}^{1} = 1 / N$ にしておき、学習過程で誤差が大きいか誤分類されたデータポイントの重みを大きくして次の試行でより頻繁にサンプリングされるようにする。こうして世代を重ねて学習される $f^{(t)}$ は徐々に弱点を克服する方向に特化する。
最終モデル
最終モデル $F$ は回帰問題と分類問題に応じて異なる構成を取る。回帰問題では次のように出力の平均を返す式で表される。 $$ F(x) = {\frac{ 1 }{ T }} \left( f^{(1)}(x) + \cdots + f^{(T)}(x) \right) $$
分類問題では次のように多数決で出力を返す式で表される。$\operatorname{mode}$ は最頻値を表す。 $$ F(x) = \operatorname{mode} \left\{ f^{(1)}(x), \cdots , f^{(T)}(x) \right\} $$
ちなみに、このような実装はほとんどの状況で標準的なものであり、これらの方法のみがバギングとブースティングを意味するわけではない。概念的には冒頭で述べたように並列的か直列的かが肝要である。
Quinlan, J. R. (1996, August). Bagging, boosting, and C4. 5. In Aaai/Iaai, vol. 1 (pp. 725-730). ↩︎
