【Rによるデータサイエンス】集団学習
【定義】
集団学習とは。。。
集団学習(ensemble learning、アンサンブル学習)は、決して精度が高くない複数の結果を統合・組み合わせ、精度を向上させる機械学習方法である。
複数結果の統合・組み合わせの方法としては。。。
No | 解くべき問題 | 複数結果の統合・組み合わせの方法 |
1 | 判別分類の問題 | 多数決 |
2 | 回帰の問題 | 平均 |
3 | 集団学習 | 異なる重み、あるいは異なるサンプルから単純なモデルを複数作成し、これらを何らかの方法で組み合わせることで精度と汎用性が両立するモデルを構築 |
◎バギング
バギングでは、次の図のように、
m回の復元抽出法により教師データを抽出しデータセットを作成し、回帰・判別モデルhを構築する。
そして、そのステップをB回繰り返し回帰判別モデルをB個作成する。
このようにして作成したB個のモデルの平均や多数決をとることで、最終的なモデルとする。
TOKYO.Rの資料に分かりやすいのがあった。
ここのサンプルはそのまま動くし、なかなか( ・∀・)イイ!!
アンサンブル学習 from Hidekazu Tanaka
これを読むと、バギング、ブースティング、ランダムフォレストの3つのアルゴリズムをcaretパッケージを使用して比較しており、結論として「ランダムフォレストが最も精度が高い」としている。
「Rによるデータサイエンス」にも「精度および計算機資源の節約などの面で、バギング、ブースティングより優れている」とある。もー、結論わかっているなら、ランダムフォレストだけ紹介してくれればいいのにw。
ところで、ランダムフォレストとバギングとの違いだけど、バギングは全ての変数を使用するのに対して、ランダムフォレストは変数をランダムにサンプリングしたサブセットを用いる。そのため高次元データ解析に向いている。
ランダムサンプリングする変数の数Mは任意に設定できるが、プライマンはMとしては変数の数の正の平方根を推奨している。