アンサンブル学習

アンサンブル学習とは

アンサンブル学習は、複数のモデル(学習器)を融合させて1つの学習モデルを生成する手法です。「三人寄れば文殊の知恵」のように、複数のモデルの予測値を様々な手法で組み合わせ、予測精度を向上させることに用いられます。

機械学習のモデルの当てはまりの良さを評価する際、バイアスとバリアンスの2種類の指標が用いられます。バイアスは実際値と予測値との誤差の平均で、バリアンスは予測値がどれだけ散らばっているかを示す度合いです。つまり、バイアスとバリアンスの値が小さいほど予測値と実際の値の誤差が小さいことになります。よって、学習効率を上げるにはバイアスとバリアンスをともに下げる必要があります。

アンサンブル学習は、複数の学習器を組み合わせてこのバイアスとバリアンスを調整します。調整の仕方によって、バギング・ブースティング・スタッキングの3種類があります。


バギング (Bootstrap Aggregating)は、バリアンスを下げるために行われます。

学習データの情報を全て使うのでなく、ブートストラップ法で分割したデータを弱学習器で学習し、最終的な学習器に統合します。ブートストラップとは、復元抽出によってサブデータを作成する手法のことです。分類問題の場合は最大値、回帰問題の場合は平均をとります。並列処理が可能で、バギングを利用したアンサンブル学習にはランダムフォレストなどが知られます。


ブースティング (Boosting)は、バイアスを下げるために行われます。

以前に使用したデータを再利用(復元抽出)して、逐次的に弱学習器を構築します。したがってバギングと異なり、並列処理はできません。ブースティングを利用したアンサンブル学習には勾配ブースティングマシンなどが知られています。


スタッキング (Stacking)は、モデルを積み上げていくことで、バイアスとバリアンスをバランスよく調整する手法です。

まず、ブートストラップ法で得たデータセットを、ランダムに選んだ様々な学習器で学習させます。次に、この予測値を用いて、どの学習器を組み合わせると正解率が最大になるかを学習します。より正解率の高い学習器同士を組み合わせることで、学習器をランダムで組み合わせるよりも精度が高くなります。


スタッキングは非常に強力ですが、学習器の数や学習の段階は数十のオーダーにも及び、その組み合わせの数は膨大です。

さまざまな学習器単独の弱みをカバーするアンサンブル学習を使いこなすことで、さらなる予測精度の改善につながるでしょう。