アンサンブル学習について解説!
![](https://blog.since2020.jp/cms/wp-content/uploads/2023/07/data-3.jpeg)
「アンサンブル学習」とは、複数の予測モデルを組み合わせて、新たなモデルを作ることを言い、Kaggleなどのコンペティションで、精度を高めたいときによく使われます。本記事では、アンサンブルの基本的な手法から、やや複雑な手法まで、ご紹介します。
はじめに
「アンサンブル」とは、音楽の世界では、複数の楽器や歌声を一緒に演奏させることを言いますが、機械学習の分野では、複数の予測モデルを組み合わせて、新たなモデルを作ることを言います。特に、Kaggleなどのコンペティションで、精度を高めたいときによく使われます。本記事では、アンサンブルの基本的な手法から、やや複雑な手法まで、順にご紹介します。
単純なアンサンブル手法
はじめに、シンプルなアンサンブルの方法を取り上げます。
回帰問題の場合、いくつかのモデルの予測値の「平均(もしくは加重平均)」を取るというアンサンブル方法があります。加重平均とは、「精度の良いモデルは他のモデルの2倍の重みをかける」というように重み付けを行うことです。また、分類問題の場合は、予測値のクラスの「多数決」を取る方法があります。こちらも、回帰問題と同様に、モデルごとに重み付けして多数決を取ることも可能です。
続いて、「バギング」「ブースティング」「スタッキング」という3つの特徴的なアンサンブル手法についてご説明します。
バギング
バギングとは、ブートストラップ法を用いて複数のモデルを構築し、その結果を統合する手法です。ブートストラップ法とは、元のデータセットから重複を許してランダムにサンプリングを行い、そのサンプルを使ってモデルを学習する方法です。
バギングでは、元のデータセットからランダムに複数のサブセット(サンプルの集まり)を抽出し(Bootstrap)、それぞれのサブセットを使ってモデルを訓練します。そして、それぞれのモデルが出力する予測結果を統合することで最終的な予測を行います。統合する際は、回帰の場合は平均をとったり、分類の場合は多数決を行ったりすることが一般的です。
バギングの代表的なアルゴリズムに、「ランダムフォレスト」があります。ランダムフォレストは、ブートストラップ法により得た複数のサブセットを使って、決定木を構築し、それぞれの決定木の予測結果を統合することで、最終的な予測を行います。
ブースティング
まず、ブースティング(boosting)とは「増強する」という意味です。
ブースティングの基本的な考え方は、はじめにベースとなるモデルを作成し、そのモデルの誤りを修正するように、モデルを順次追加していくというものです。モデルは一度に1つずつ追加され、1つ前のモデルで間違ったサンプルに大きな重みを与えた状態で学習させます。すなわち、モデルの弱点を少しずつ「増強する」というイメージです。バギングでは並列にモデルを繋いでいたのに対し、ブースティングでは直列にモデルを繋いでいることが特徴です。
ブースティングを用いた代表的なアルゴリズムに、「XGboost」や「LightGBM」が挙げられます。
スタッキング
はじめに、スタッキング(Stacking)とは「積み重ねる」という意味です。スタッキングは、バギングやブースティングと比べると少々複雑な手法となっています。
スタッキングの手順は次のとおりです。
学習データをいくつかのFold(グループ)に分ける
K-Foldクロスバリデーションの要領でモデルを学習させ、バリデーションデータへの予測値を出力する
それぞれの予測値を新たな特徴量とする
それぞれのFoldで学習したモデルを用いて、テストデータを予測し、それらの平均を取ったものをテストデータの特徴量とする
2〜4の手順を、スタッキングしたいモデルの回数繰り返す
これらのモデルを「1層目のモデル」という
1層目のモデルの予測値を通常の特徴量のように扱い、モデルの学習と予測を行う
このモデルは、「2層目のモデル」または「メタモデル」という
注目すべき点は、1層目で作成した特徴量は、予測値を使用していますが、これは、「目的変数を知らないデータで学習したモデルによる予測値」であることです。テストデータ(正解データ)を、学習には用いていない点に注意してください。ここに、クロスバリデーションの手法を利用していることが効いています。
注意
アンサンブル学習は、モデルの精度を上げるのに有用な方法です。モデルの精度を競うKaggleなどのコンペティションではよく用いられます。しかしながら、モデルの学習に時間がかかることや、精度を上げるための労力に対するビジネスインパクトを考慮したとき、複雑なアンサンブル学習は、実務においては、必ずしも最適とは限りません。「単一のモデルであまり良い精度が出ないな…」というときに試してみるのも良いと思います。
最後に
本記事では、アンサンブル学習の手法について紹介しました。アンサンブル学習には、予測結果の平均を取ったり、多数決を採用したりといったシンプルな手法もあれば、「バギング」「ブースティング」「スタッキング」といった複雑な手法もありました。いずれの手法も、単一のモデルの弱点を補うために、複数のモデルを組みわせるという点で、共通しています。
また、機械学習でよく用いられる、ランダムフォレストやLight GBMといったアルゴリズムが、このアンサンブル学習の一つであることを理解していただけたと思います。