アイアナブログ 〜統計学・機械学習・AI〜

データコンサル会社アイアナのブログ。統計学、Rを使ったデータ分析、Pythonを使ったAIなど

バッギング、ランダムフォレスト、ブースティング

今回は集団学習(アンサンブル学習)で良く出てくる、バッギング、ランダムフォレスト、ブースティングについてメモしておきます。参考にしている教科書はこちらです。貼りつけている数式もこの教科書から抜粋しています。


The Elements of Statistical Learning: Data Mining, Inference, and Prediction, Second Edition (Springer Series in Statistics)

The Elements of Statistical Learning: Data Mining, Inference, and Prediction, Second Edition (Springer Series in Statistics)

どの手法も、「弱い学習器」をたくさん集めて良い予測値を得ることを目指しています。弱学習器を集めているせいか、予測精度は高いのに過適合しにくいのが特徴です。教科書の事例では学習データでどんどん学習させても、テストデータに対して予測エラーが全然上がらない(つまり過学習していない)。


1. バッギング(Bagging)

データをブートストラップサンプリングし、予測器f(x)を作る。それをB回繰り返し、それぞれの予測器の平均値を予測値とする。

特に、f(x)が決定木(decision tree)の場合をバッギング木(bagged tree)という。



2. ランダムフォレスト(Random Forest)

バッギング木と似たアルゴリズムだが、説明変数もランダムにm個選択するところが大きく異なる。バッギングと同じように、データは毎回ブートストラップサンプリングする(P588)。




3. ブースティング(Boosting)

アルゴリズムGの予測値を実測値に近づけるように、予測値の加重和パラメータω、アルゴリズムの加重和パラメータαを計算する。最終的にM個作ったアルゴリズムをαで加重和したものを予測値とする(下記の結果変数は[-1, 1]なのでsignを予測値としている)。

パラメータの計算方法で最も有名な方法が、アダブーストM1(Ada Boost.M1)である(P339)。また、アルゴリズムGの損失関数の微分(勾配)を利用して、パラメータ更新を素早く行うことのできる手法が、勾配ブースティングモデル(Gradient Boosting Model, GBM)である(P361)。