この記事では、機械学習における「アンサンブル学習」について、その意味や機能する理由、主なアンサンブル学習手法の概要を解説します。
<目次>
アンサンブル学習とは何か
アンサンブル学習 (Ensemble Learning) は、複数の異なる機械学習モデルを組み合わせることで、単一のモデルに比べてより高い予測性能を実現する手法です。
最もシンプルなアンサンブル学習は、単純に複数のモデルの予測値の平均を取り、それを最終的な予測値とする方法です。ケースによっては、このようなシンプルなアンサンブル学習でも、大きな予測性能の改善効果を得ることができます。
アンサンブル学習を適切に設計することで、単一のモデルでは十分に対処することが難しい複雑な問題に対して、高い予測性能を実現することが可能となります。一方、多数のモデルを構築し、組み合わせる必要があるため、単一のモデルに比べてより多くの計算資源が必要になるという面も持ち合わせています。
なお、様々な機械学習モデルの中で、決定木や線形モデルなど、比較的単純なモデルのことを弱学習器 (weak learner) と呼ひます。これに対し、より複雑な構造を持ち、単独でも高い予測性能を実現するモデル(ニューラルネットなど)は強学習器 (strong learner)と呼ばれます。
アンサンブル学習では、後述するような様々な形で複数の弱学習器(または強学習器)を組み合わせることで、複雑な問題に対して高い予測性能を実現します。
アンサンブル学習はなぜ機能するのか
機械学習モデルでは、予測値の誤差を生み出す要因として以下の3つが存在しますが、アンサンブル学習が機能する理由は、このうちの「②偏り(バイアス)」と「③分散(バリアンス)」を低減する効果があるためです。
①予測対象に内在するランダム性:
予測があくまで確率的なものであり、決定論的なものではないこと。
②偏り(バイアス):
モデルがデータの全ての側面を完全に学習することはできないことから生じる、予測値と真の値との乖離。
③分散(バリアンス):
異なるデータをもとに学習したモデルが、異なる予測を行う程度。予測のバラつき。
モデルの予測性能を高めるためには、「偏り」と「分散」の両方を可能な限り小さくすることが必要ですが、この2つの間にはトレードオフが存在します。特に、アンサンブル学習で使う弱学習器は、データの特定の部分のみに適応することで偏りが大きくなりやすい一方、偏りを減らそうとするほど過学習に陥り、分散が大きくなる傾向にあります。
各モデル(弱学習器)は、特定の領域に関する「専門家」として考えることができます。それぞれのモデルはある複雑な問題の中の特定の領域に関する知見を持った専門家ですが、各専門家単独では、大きな偏りや分散を含む予測しか行うことができません。
アンサンブル学習は、それぞれに異なる知見を持つ「専門家集団」の意見を組み合わせ、それを集約した形で予測を行うことで、偏りと分散のトレードオフをより高い水準に引き上げ、複雑な問題に対しても高い予測性能を実現する手法と理解することができます。
主なアンサンブル学習手法
バギング (Bagging)
代表的なアンサンブル学習手法の一つが、バギング (Bagging) です。バギングは、あるデータセットにおける複数の異なる(重複しない)サブセットに対して、複数の異なる弱学習器を「並列」に学習させる手法です。代表的なものに、複数の決定木を並列に並べて学習を行う、ランダムフォレスト (Random Forest) があります。
金本(2024)を参考に、Intelligence In Society作成
バギングは以下のような手順で行われます。
【手順1】
ブートストラップサンプリングによって、学習データの一部をサンプリングし、N個のサブセットを作る。
【手順2】
個々のモデル(弱学習器)が、サンプルリングされた少しずつ異なるサブセットに対して学習を行う。
【手順3】
回帰であれば各モデルの結果の平均、分類であれば多数決を取ることで、最終的な予測値を得る。
バギングを行うことで、予測値の誤差を生み出す3つの要因のうち、特に「分散」を減らすことが可能となります。なお、ランダムフォレストでは、学習データのサンプルリングだけでなく、各モデルの分岐を作成する際にも、特徴量の一部のみをサンプリングして抽出することで、個々の決定木が特徴量の異なるサブセットに対して分岐を行います。
このように、決定木の構築過程で乱数によるサンプリングを導入し、個々の決定木が互いに異なるようにすることで、各々異なる方向に適合したモデルを作成します。そして、これらを組み合わせることで、過学習を回避しながら予測性能の向上を実現します。
ブースティング (Boosting)
ブースティング (Boosting) も、バギングと同様にアンサンブル学習の代表的な手法ですが、弱学習器を並列に並べるバギングと異なり、ブースティングでは弱学習器を「直列」に並べます。そして、2つ目以降のモデルでは目的変数と既に作成したモデルによる予測値の差に対して学習し、少しずつ予測を修正していきます。
ブースティングの代表的なものには、複数の決定木を直列に並べて学習を行う、GBDT(勾配ブースティング決定木) があります。
金本(2024)を参考に、Intelligence In Society作成
ブースティングは以下のような手順で行われます。
【手順1】
モデル(弱学習器)を用いて学習データ(全体)に対して学習を行い、予測誤差の大きな対象に大きな重みを割り当てる。
【手順2】
重み付けされた学習データに対して、新たなモデルを用いて学習を行う。そして再度、予測誤差の大きな対象に重みを割り当てる。事前に設定した数のモデルの学習が完了するまで、この手順を繰り返す。
【手順3】
各モデルの予測値の組み合わせによって、最終的な予測値を得る。
ブースティングでは、前のモデルによる予測で誤差が大きかった部分に重みを付け、次のモデルではそこを重点的に学習するため、モデルを経るごとに予測誤差を減らしていくことができます。これにより、予測値の誤差を生み出す3つの要因のうち、特に「偏り」を減らすことが可能となります。
GBDT(勾配ブースティング)では、木を増やすに従いモデルの精度が高まっていくため、新たに作成される木の最終的な予測におけるウェイトは徐々に小さくなります。最終的な予測値は、予測対象データがそれぞれの決定木で属する葉の出力値(予測の修正量:前ステップまでの予測に対して上乗せ・差し引きする値)の和として算出されます。
スタッキング (Stacking)
スタッキング (Stacking) は、これまでに解説した弱学習器を組み合わせるアンサンブル学習手法とは異なり、上記のランダムフォレストやGBDT、ニューラルネットといった強学習器も組み合わせの対象とすることで、より高い予測性能を目指す手法です。「多くの計算資源を使ってでも、少しでも高い予測性能を得たい」というようなケースで実施されます。
「stacking」は日本語で「積み重ね」を意味しますが、スタッキングの特徴は、モデルを複数の層の形で積み重ね、前の層で作成した予測値を次の層の「特徴量」として用いることでモデルの学習を進めていく点にあります。
1層目のモデルでは、ランダムフォレストやGBDTなど、組み合わせたいモデルを用いてクロスバリデーションで学習・予測し、2層目のモデルでは「1層目のモデルによる予測値」を特徴量として用いた学習を行います。2層目までのスタッキングでは、この2層目のモデルによる予測値を最終的な予測値としますが、3層目以上に積み重ねることも可能です。
門脇(2019)などを参考に、Intelligence In Society作成
【手順1】
クロスバリデーションを用いて分割した学習データをホールドアウトで学習し、バリデーションデータへの予測値を作成する。これにより、「そのモデルによる予測値」という特徴量を作成する。
【手順2】
クロスバリデーションの各分割で学習したモデルでテストデータに対する予測を行い、その平均を取ったものを「テストデータの特徴量」とする。
【手順3】
手順1~2を、組み合わせたい各モデルに対してそれぞれ実施する。
【手順4】
手順1~3で作成した「各モデルによる予測値」を特徴量として用いて、2層目のモデルの学習を行う。学習したモデルをもとに「テストデータの特徴量」を用いてテストデータの予測を行う。
スタッキングによって作成した「あるモデルによる予測値」という特徴量を「メタ特徴量」、メタ特徴量を用いて学習した2層目以降のモデルを「メタモデル」と呼ぶこともあります。
スタッキングの利点は、メタモデルがメタ特徴量を用いて学習する際に、より信頼できるモデルの予測値を自動的に判別することで、より高い予測性能を実現できる点にあります。
ここまで、機械学習における「アンサンブル学習」について、その意味や機能する理由、主なアンサンブル学習手法の概要を解説しました。
当記事に関連するトピックについての詳細は、以下のページをご覧ください。
また、機械学習に関する全ての記事は以下のページからご覧いただけます。
参考文献:
◦Foster Provost, Tom Fawcett (2014) 『戦略的データサイエンス入門―ビジネスに活かすコンセプトとテクニック』O’Reilly Japan
◦金本拓 (2024) 『因果推論ー基礎から機械学習・時系列解析・因果探索を用いた意思決定のアプローチー』, オーム社
◦門脇大輔,阪田隆司,保坂桂佑,平松雄司 (2019)『Kaggleで勝つデータ分析の技術』, 技術評論社