刮目せよ!アンサンブル機械学習
前回は、機械学習のうちでも今、最も話題の手法・ディープラーニングについて、自分なりに学んだことを、アップしてみました。その結果、ディープラーニングといえども万能ではないこと、アンサンブル機械学習なる、場合によってはディープラーニングよりも適している手法があることを、学びました。
今回は、そのアンサンブル機械学習について、学んだことをアップしていきたいと、思います。
アンサンブルとは何なのか
今回も前回と同じく、まずは言葉の意味から、考えてみたいと思います。アンサンブルとは、辞書的に言うと、「各部分が総合され調和のとれた全体」という意味だそうです。つまり、「アンサンブル機械学習=何かの部分から構成された、全体としての機械学習」と言うことが、できるかと思います。
では、何かとは一体、何なのでしょう?まずは、以下をご覧ください。〇×クイズの回答を予測するAIを、機械学習で作ったとします。
正解 | 機械学習1の予測 | 機械学習2の予測 | 機械学習3の予測 | 多数決 |
---|---|---|---|---|
〇 | 〇 | 〇 | 〇 | 〇 |
〇 | 〇 | 〇 | × | 〇 |
〇 | 〇 | × | 〇 | 〇 |
〇 | × | 〇 | 〇 | 〇 |
個々の機械学習1~機械学習3は、正解率が75%ですが、多数決を取ると、全体として、正解率が100%になります。この、個々の機械学習1~3こそが、アンサンブル機械学習を構成する「何か」であり、専門用語で「弱学習器」なんて、呼ばれたりします。
そして、アンサンブル機械学習とは、「一個一個は精度が低い、複数の弱学習器から構成された、全体として精度の高い機械学習」と言うことが、出来るかと思います。
次から、代表的なアンサンブル機械学習の手法を、もう少し掘り下げてみたいと思います。
アンサンブルじゃない機械学習
おそらく、上級者ともなれば、自前で弱学習器を組み合わせて、独自のアンサンブル機械学習モデルを、状況に応じて組み上げたり、出来るのでしょうが・・・
世の中には、組みあがり済みのアンサンブル機械学習のライブラリが、いくつかあります。そんな世の中で人気のアンサンブル機械学習ライブラリで、弱学習器としてよく利用されている手法が・・・決定木/回帰木と呼ばれるものです。以下を、ご覧ください。
よく機械学習の本なんかに出てくる、アヤメの花の分類を、決定木でやってみたものを、可視化した図です。まずは、「petal lengthが2.45以下かどうかを判定し、続いて、petal widthが1.75以下かどうかを判定し・・・」という風に、延々とif文を繰り返していくような形で、入力データを処理します。
処理結果が、上記図のように、いくつかの種類に分かれるものは「分類」といい、画像認識なんかも、これにあたります。一方、処理結果が、「金額」のように、無数の連続値をとるものは「回帰」と呼ばれ、上記の手法で回帰問題を解く場合は、「回帰木」なんて、呼ばれます。
この決定木/回帰木を弱学習器として利用した、いくつかのアンサンブル機械学習の手法が、ディープラーニングと並び、コンテストなんかでもよく利用されている、そうです。
アンサンブル機械学習の手法その1:バギング
一つ目が、バギングと呼ばれる手法で、まんま上の方で例示した、これです。
正解 | 決定木1 | 決定木2 | 決定木3 | 多数決 |
---|---|---|---|---|
〇 | 〇 | 〇 | 〇 | 〇 |
〇 | 〇 | 〇 | × | 〇 |
〇 | 〇 | × | 〇 | 〇 |
〇 | × | 〇 | 〇 | 〇 |
ちょっとずつパラメータを変えた、複数の決定木/回帰木を弱学習器として並列に使い、多数決したり平均を取ったりして、全体としての予測結果を出す手法で、ランダムフォレストと呼ばれます。ランダムにちょっとずつパラメータを変えた木を、たくさん作るので、森というわけですね。
ランダムフォレストは、安定して精度が出て、チューニング用のパラメータも少ない・分かりやすく、どの入力データが予測をするうえで重要だったか、ランキングを付けて教えてくれるという、初心者にも優しい親切設計な手法です。
迷ったら、とりあえずランダムフォレストを使っておいても、間違いない!?かも、しれません。
アンサンブル機械学習の手法その2:ブースティング
並列があるなら直列もあるだろうということで、複数の決定木/回帰木を弱学習器として直列に使う手法が、ブースティングになります。
ブースティングの手法は複雑で、まだ私もあまりよく理解はできていないのですが・・・ざっくりイメージを書くと、以下のような処理の流れに、なります。
- 決定木/回帰木を使って、入力データを学習・評価。
- 予測誤差があったところを重点的に補正し、第二の決定木/回帰木を、作る。
- 入力データを学習・評価し、予測誤差があったところをry
という風に、逐次的に、誤差があったところを重点的に補正しつつ、学習を進めていきます。ランダムフォレスト(バギング)と比べて、以下の特徴があると、言われています。
- 【-】学習時間がかかる(直列だし)。
- 【-】学習パラメータが多く、チューニングが難しい。
- 【-】解釈が難しい。
- 【+】ちゃんとチューニングできれば、予測精度はバギングより高くなることが、ある。
つまり、安定して精度が出て、そこそこ解釈性もあり、チューニングもそこまで難しくない、いい意味で丸いやつ(?)がランダムフォレストで、難しいけど頑張れば精度が出る、とがったやつ(?)がブースティングといった、ところでしょうか。
イメージ的に、弱学習器⇒バギング⇒ブースティング⇒ディープラーニングとなるに従って、精度はあがるものの、「何故そういう予測になったのか」を人間が理解するのが難しくなる、専門用語で言うところの解釈性が低くなるような、イメージがあります。
ブースティングの代表的な手法として、XGBoostというものが長らく人気でしたが・・・最近、Microsoftが出した、LightGBMという手法が、人気なんだそうです。ぱっとやってみた感じ、Lightの名にたがわず計算時間も早く、マイエース手法になってくれそうな?予感が、あります。
・・・というわけで、アンサンブル機械学習がなんだかわかったところで(?)、次からは実際に、いくつかの問題を、機械学習で解いていってみたいと思います。
最後まで読んでいただいて、ありがとうござました。