scikit-learnのBaggingClassifierでバギングする2019-09-02scikit-learnのBaggingClassifierでバギングするScikit-learnscikit-learnには、アンサンブル学習を行うためのBaggingClassifierが実装されている。本記事では、BaggingClassifierを用いた学習(バギング、ペースティング、ランダムサブスペース、ランダムパッチ)について解説する。0.21.3アンサンブル学習アンサンブル学習は、複数の予測器(分類器や回帰器など)の予測結果を1つにまとめる手法である。アンサンブル学習には様々な手法があり、代表的なものを以下に示す。バギング:予測器ごとにランダムに選んだデータで学習させる。ブースティング:逐次的に予測器を構築し、直前の予測器の誤差を修正するように学習させる。キング:複数の予測器の結果をまとめる予測器(メタ学習器)を用いる。上記の手法は、完全に分類できるものではない。バギングで学習させた予測器の結果を、スタッキングでまとめることも可能である。本記事ではバギングおよび、それに類似する手法を扱う。BaggingClassifierを用いると、これらの手法を簡単に実装できる。各手法の違いを下表に示す。重複なしランダムサンプリングバギングでは学習インスタンスのサンプリングが重複ありで行われ、ペースティングでは重複なしで行われる。バギングでは、同じ予測器に対して同じ学習インスタンスが複数回選ばれることがあり得る。一方で、ペースティングでは同じ予測器は異なる学習インスタンスしか選ばれない。ランダムサブスペースでは、特徴量の方向に、重複ありのランダムサンプリングを行う。この手法が有効なのは、以下のような場合である。元データの特徴量が非常に多い特徴量の数の2乗や3乗に比例して、予測器の計算負荷が増加するランダムパッチでは、学習インスタンスと特徴量の両方に対して、重複なしのランダムサンプリングを行う。各手法を実装するには、後述のBaggingClassifierのパラメータを下表のように設定する。1.0未満BaggingClassifierクラスについて前述の通り、scikit-learnに実装されているBaggingClassifierを用いると、バギング等を簡単に実装できる。verbose=0)引数BaggingClassifierの引数の解説は以下の通り。Noneバギング等を行う予測器のオブジェクト。