機械学習

アンサンブル学習とは?バギングとブースティングの違い

こんにちは!デジタルマーケターのウマたん(@statistics1012)です!

様々な機械学習が登場する中、地味に存在感を強めているのがアンサンブル学習。

アンサンブル学習は、単独では強い手法ではない手法を多数使って精度を上げる方法。

Kaggleなどのデータ解析コンペで用いられることの多い、XGboostやLightGBMもアンサンブル学習の1つであるブースティングを用いています。

この記事では、そんなアンサンブル学習について見ていきます。

アンサンブル学習とは

アンサンブル学習とは、単独では精度の高くない弱学習器(決定木などなど)を多数用いることで高い精度をたたき出す手法群です。

アンサンブル学習に関しては「バイアス」と「バリアンス」という概念が関係してきます。

バイアスは、予測値と実測値の差を表します。バイアスが低ければ低いほど上手く予測出来ているということになります。

一方バリアンスは、予測値のばらつきを表します。複雑なモデルを組んで様々なデータへフィッティングさせようとすると予測値がばらつきバリアンスは高くなります。

バイアスとバリアンスはトレードオフの関係にあります。ばらつきのあるデータに対してそれらを上手く当てることが出来ればバイアスは小さくなりますがバリアンスは大きくなることが想像できるでしょう。

一方それほどばらつきのない一定の予測値を返すと、精度は低いのでバイアスは高くなりますがバリアンスは小さくすることが可能です。

ちなみにバイアスが低くてバリアンスが高い状態は過学習に陥っている可能性が高く、未知データに対する予測精度は落ちてしまう可能性があります。

Kaggleなどのコンペでは現状のデータに対する精度で仮順位が決められます。過学習をしていると仮順位は高いのですが、本番で一気に順位が下がってしまうのです。過学習には注意しなくてはいけません。

アンサンブル学習は、バイアスが高く精度の低い弱学習器を複数用いることでバリアンスを高めバイアスを抑える手法です。

バリアンスを高めるので過学習に陥る可能性があります。上手くバイアスとバリアンスのバランスを取ることが大事(早口言葉みたい笑)!

元々精度の高い手法(バイアスが低い)に対してアンサンブル学習を使おうとしても意味がないのはそういう理由があるんですねー!

SVMとかをアンサンブル学習したら最強じゃん!とか思っていた時期がありました笑

アンサンブル学習の種類

さて、アンサンブル学習には大きく分けて3つのタイプ「バギング」「ブースティング」「スタッキング」があります。

スタッキングに関してはイマイチ分かっていないのでここでは説明しません。

バギングとブースティングについて見ていきましょう!

バギング

バギングは、並列的に弱学習器を用いてそれぞれのモデルの総合的な結果を用いるという手法です。

バギングと決定木を組み合わせたランダムフォレストは以下のようなイメージ

訓練データに対していくつも決定木モデルを作成し、それぞれの結果を集約して最終結果を出力します。

回帰だったら平均値、分類だったら多数決。

ランダムフォレストは非常に簡単に実装できる手法ですが、それなりに高い精度が見込めるのでオススメです!

ブースティング

バギングは並列でしたが、ブースティングは直列的に弱学習器を用いていきます。

最初の弱学習器で上手く推定できなかった部分を推定するために重みを付けて次の弱学習器で学習を行います。

最終的には、精度の高いモデルに重みを付けて最終的なモデルを作成します。

決定木とブースティングを組み合わせた手法がXGboostであり、非常に高い精度をたたき出します。

一般的にブースティングの方がバギングより高い精度が見込めますが、学習に時間がかかります。

アンサンブル学習の注意点

アンサンブル学習を行う上での注意点を最後に挙げておきます。

何でもかんでもアンサンブル学習すればよいというわけではない

当たり前ですが、なんでもかんでもアンサンブル学習をすれば良いというわけではありません。

先ほども述べましたが、元々バイアスの低い学習器(SVM)などをアンサンブル学習することは現実的ではありません。

コストとパフォーマンスの観点からやめておいたほうが良いです。

アンサンブル学習は単独では弱い手法を用いるということを覚えておきましょう!

学習に時間がかかる

弱学習器とは言え、何回も繰り返し学習を行うのでモデル構築に時間がかかります。

それほど精度を求めるわけではないなら弱学習器のまま解析を行うのも一つの手です。

バリアンスとバイアスのバランスに注意

バイアスの高い弱学習器を多数使うことでバイアスを小さくしていくのがアンサンブル学習ですが、弱学習器の数を増やし過ぎるとバリアンスが高くなり過学習してしまうので要注意。

交差検証法などを行い最適なパラメータ数を決定しましょう!

アンサンブル学習 まとめ

アンサンブル学習について見てきました。

アンサンブル学習とは、いわゆる三人寄れば文殊の知恵的な手法です。

ランダムフォレストやXGboostは非常に高い精度を出力してくれるので良く使います。

是非アンサンブル学習を使ってみましょう!

もっと深く理論について学びたい方は以下のはじめてのパターン認識が読むことをオススメします!

ちなみに機械学習についての本を以下にまとめているので、もし興味がある方はそちらを読んでアンサンブル学習についての理解も深めてください!

厳選7冊!機械学習を勉強する上でおすすめな本!こんにちは! この記事ではデータ解析の花形、機械学習を勉強する上でおすすめな本をご紹介します! 機械学習ってなに? 最...