MachineLearning

アンサンブル学習とは?理論から具体的な3つの手法まで解説

アンサンブル学習
機械学習を勉強中の人
機械学習を勉強中の人
アンサンブル学習って、なんだろう…。

バギングとかブースティングとか、色々あってよく分からないな…。

この記事では、上記のような悩みを解決していきます。

 

この記事の想定読者

想定している読者は、次のとおりです。

  • 機械学習を勉強している人
  • アンサンブル学習が分からない人
  • バギングとかブースティングといった言葉だけは分かる人

 

この記事では「アンサンブル学習の理論と具体的な3手法」について紹介していきます。

アンサンブル学習って聞いたことがあるけど、イマイチなんなのか良く分からないですよね。

 

でも本記事を読み終えれば、アンサンブル学習の理論だけでなく、具体的な3つの手法について分かるようになります。

この記事を書いている僕は、大学時代にディープラーニングを学んで、現在データサイエンティストとして働いています。

参考になる情報を提供できているはずなので、ぜひ最後まで読んでいただけたらと思います(`・ω・´)!

 

アンサンブル学習とは?

 

アンサンブル学習とは、複数のモデルを組み合わせて学習し、より良い精度を得るための機械学習手法です。

なお「複数のモデル」に含まれている各モデルのことを、弱学習器と言います。

なぜアンサンブルするのか?

 

なぜアンサンブル学習をするのかといえば、精度を向上するためではあるのですが、、、より具体的にいうと、弱学習器のバイアスと分散を減らすためです。

  • バイアス : 実測値と予測値の平均的な誤差
  • 分散 : 予測値のバラツキ具合

分散が分かりにくいと思うのですが、予測値のバラツキ具合が大きいということは、過学習している可能性が高いということです。

予測値がバラついているということは、テストデータに対する予測がうまく出来ていないということなので。

 

そして、バイアスは、純粋にうまく学習できていないことを表します。

 

つまり、バイアスと分散は、以下のような意味合いになってきます。

  • バイアス : うまく学習できているか
  • 分散 : うまく予測できているか

 

バイアスを減らしたい場合

バイアスを減らしたいのであれば、モデルを複雑にする(=自由度を高くする)とうまく学習できるようになります。

分類問題を解く場合であれば、直線よりも曲線の方が、うまく識別できそうですよね。

 

分散を減らしたい場合

一方で分散を減らしたいのであれば、モデルを少し単純にしてあげる必要があります。

学習データに適合しすぎている結果、過学習を起こしてしまっているので。

 

バイアスと分散はトレードオフの関係です

 

バイアスと分散を減らす方法をまとめると、以下のとおりです。

  • バイアスを減らす : モデルを複雑にする = モデルの自由度を高くする
  • 分散を減らす : モデルを単純にする = モデルの自由度を低くする

つまり、バイアスと分散はトレードオフの関係にあることが分かります。

アンサンブル学習 バイアス バリデンス

そして、機械学習で良い予測をするというのは、画像でバイアスと分散がクロスする部分になります。

だいぶ遠回りになりましたが、アンサンブル学習をする目的は、「赤星の部分を見つけるため」ということですね。

 

アンサンブル学習の3手法

 

具体的なアンサンブル学習の手法は、3つほどあります。

  • バギング
  • ブースティング
  • スタッキング

順番に紹介していきますね。

 

アンサンブル学習の手法① : バギング

 

バギングは、弱学習器を「並列的に」組み合わせることで学習していきます。

具体的なモデル名で言えば、ランダムフォレストが有名ですね。

ランダムフォレスト Python
ランダムフォレストとは?Pythonを使ったハンズオンで解説【機械学習】『ランダムフォレストってなんだろう...。どんな機械学習なのかだけではなく、Pythonを使った実装も合わせて知りたいな...。』このような悩みを解決する記事になっています。ランダムフォレストを学びたい方は必見です!...

細かい説明は、後ほど書いていきます

アンサンブル学習の手法② : ブースティング

 

ブースティングは、弱学習器を「直列的に」組み合わせて学習する方法です。

具体的なモデル名でいうと、Adaboostが有名です。

Adaboost Python
Adaboostとは?Pythonを使ったハンズオンで解説【機械学習】『Adaboostってなんだろう...。理論だけではなくて、実装まで解説されている記事はないかな...。』このような悩みを解決する記事になっています。Adaboostを学習したい方は必見です。...

細かい説明は、後ほど書いていきます

アンサンブル学習の手法③ : スタッキング

 

こちら、後ほど書いていきます(`・ω・´)!