アンサンブル学習とは
アンサンブル学習とは、複数の学習器(弱学習器と呼ぶらしい)を組み合わせることで、予測精度を高める学習方法である。
3人寄れば文殊の知恵というやつらしい・・・
アンサンブル学習には、おそらく3つの学習アルゴリズムがある。
見つけたものを書き留めます。
- バギング(Bagging)
- ブースティング(Boosting)
- スタッキング(Stacking)
- Blending
ブートストラップとは
訓練データから擬似訓練データを生成する方法である。
n個の訓練データから、重複を許してランダムにn個選ぶことで、もとの訓練データと少し違う訓練データを生成する。
このブートストラップで得られたデータを、弱学習器に渡す。
バギングとは
バギングは、複数の弱学習器を並列に繋いだような構造になる。
bagging = bootstrap + aggeregatingらしい
下の図では、集計した後に、平均をとっているが、多数決を採ったりもする。
回帰は平均、分類は多数決を実施する。
ランダムフォレストは、このバギングが使われている。
特に。。。終わり
ブースティング
ブースティングは、複数の弱学習器を直列に繋いだような構造になる。
前の学習器で誤った学習データを重点的に、次の学習器で学習させる。
ブースティングには、
- アダブースト
- マダブースト
- ロジットブースト
- 勾配ブースト
勾配ブーストは、英語に直すと、Gradient Boostingである。
Kaggleなどで有名な、XGBoostやLightBGMで採用されている。
増設中
参考
- Boosting(ブースティング)について調べたのでまとめる:AdaBoost / Gradient Boosting / XGBoostなど
- 勾配ブースティングについてざっくりと説明する
- ブースティングとアダブースト(AdaBoost)について詳しく解説
スタッキングとは
工事中
Kaggleでよく見る
初段の学習器の出力結果を次段の入力結果とする、
参考
- Introduction to Ensembling/Stacking in Python
- Pythonでアンサンブル(スタッキング)学習 & 機械学習チュートリアル in Kaggle
- 【機械学習】スタッキングのキホンを勉強したのでそのメモ
- アンサンブル手法のStackingを実装と図で理解する
Voting ensemble
おそらく、Votingは、バギングの複数モデルの多数決を意味していると思います。
Kaggleにおいては、Submissionの集約としての多数決です。
複数の予測間での相関が低いものだと、Votingすることで、精度が良くなることもあるらしい
参考
Averaging
Rank Averaging
historical ranks
Blending
Information Leakの危険性が低い