データ分析とインテリジェンス

アンサンブル学習のブースティングとバギングの違いについて

■どっちがどっちで何しているんだっけ?

バギングとブースティングの区別がようやくつくようになってきた(気がする)がさらにそれぞれのアルゴリズムになるとまだ混乱する。というわけで、今のところの自分の認識を書いてみる。

■アンサンブル学習とは

アンサンブル学習とはようするに「1回で決めるよりたくさんやって平均取った方がいいんじゃね?」というアプローチということであると理解している。たしかにその方がより正しそうな結論がでそうだし、異常値などに引っ張られることも少なくなったりするだろうと想像はつく。細かいやり方は違うけどやっていることは至極自然な発想。

■バギング

1つの方法として、データ全てを使うのではなくその一部を使って学習し、それを何度も繰り返して最後に合わせる方法が考えられる。それがバギングである。

ランダムフォレスト

バギングの1つの方法。学習に決定木を使うのでこの名前らしい。抽出の際に説明変数もランダムに抜き出し、決定木を作る際に剪定を行わない。どれぐらいの説明変数を抜き出すかは説明変数の数mに対して「分類では\(\sqrt{p}\)、回帰の場合は\(\frac{p}{3}\)をランダムフォレストの提案者は推奨」と『統計的学習の基礎』にあるが、経験的にそうなるのか、あるいは証明が存在するが割愛したのか理由は不明。

■ブースティング

データの一部を抽出してそれで弱学習機を作り、最後に合わせるのはバギングと同様。違いは前回の結果を利用するのがブースティング。なので並列処理はできない。

アダブースト

前回の結果で誤分類された値の重みを大きくするように更新する。ブースティングと単に言えばこれを指すことが多いらしい。

勾配ブースティング

勾配降下法を使ったブースティングのこと。正直なところアダブーストとの違いがいまいちよくわからない。

GBDT(Gradient Boosting Decision Tree)

弱学習機に決定木を使った勾配ブースティングのこと。

■で、結局どれを使えばいいいの?

この手の「手法がいろいろ紹介されるけれどもどれを使えばいいのかは示されない」というパターンに漏れず、アンサンブル学習も同様にどれを使えばいいのかよくわからない。が、教師なし学習と違って評価できるのが救いでやれるだけやって一番いいのを選べばよさそう。と考えると、いずれは計算はDataRobotみたいのに任せるのが主流になり、専門家はアルゴリズムの開発の方にシフトしていくのかも。

■あとは手を動かす

言葉だけまとめてはみたものの、もちろんこれだけでは何も解決するわけもなく、実際に使えるようになるためにはいまのところ自分でパラメータを変えたり説明変数を追加や削除してみたりと自分で手を動かして試行錯誤が必要で、アルゴリズムの数式を理解するよりもそちらの方に時間を割くことの方が重要だろう。理解もしないで分かったつもりできるのは危険だが、頭だけで理解したところで使えなければ意味がない。

とはいえ設定できるパラメータの種類も、説明変数の組み合わせも膨大なわけで、力技ではとてもでないは無いが対抗できないのでそれは理解した上で不要なことは避けなければならない。何事もバランスということか。

このエントリーをはてなブックマークに追加

タグ:機械学習 アンサンブル学習 ブースティング バギング ランダムフォレスト


最新のブログ記事5件

大学や独学でデータ分析の勉強をしただけだと実務で使えない理由
「データ分析をする人」とは何をする人のことを指しているのか
定期レポートを効率化する
最悪のデータ分析組織とは
「何を知りたいのか」がわからなければデータ分析は始まらない

ブログトップ > アンサンブル学習のブースティングとバギングの違いについて