アンサンブル学習とは
Ensemble Learning
複数の予測モデルの出力を組み合わせることで、単体のモデルより高い予測性能を実現する機械学習の手法群
ひとことで言うと
複数のAIモデルの答えを組み合わせて、より精度の高い答えを出す手法。
概要
アンサンブル学習とは、複数の予測モデル(弱学習器)を組み合わせ、それぞれの予測結果を統合することで、単体のモデルよりも高い予測性能や安定性を実現する機械学習の手法群を指す。 学習データや特徴量をランダムに変えた複数のモデルを並列に学習させ多数決・平均で統合するバギング(ランダムフォレストが代表例)と、モデルを1つずつ順番に学習させ直前までの誤りを補正していくブースティング(勾配ブースティングが代表例)は、代表的な2つのアプローチとして知られる。 個々のモデルの誤りが互いに独立しやすいほど、組み合わせた際の性能向上効果が大きくなるとされる。
背景
単体のモデルは、学習データの偏りやモデル自体の限界によって特定の誤りを起こしやすいという課題があった。 アンサンブル学習は、性質の異なる複数のモデルを組み合わせて誤りを打ち消し合わせ、より安定した予測を得るために発展してきた。
アーキテクチャ
代表的な組み合わせ方には、バギング・ブースティング・スタッキングの3つがある。 バギングは、複数のモデルを独立に並列学習させ、多数決や平均で統合する手法であり、ランダムフォレストが代表例。 ブースティングは、モデルを1つずつ順番に学習させ、直前までの誤りを次のモデルで補正していく手法であり、勾配ブースティングが代表例。 スタッキングは、複数モデルの予測結果自体を新たな入力として、別のモデル(メタモデル)に学習させる手法。 いずれも、個々のモデルの誤りが互いに独立しやすいほど、組み合わせによる性能向上効果が大きくなるとされる。
コード例
scikit-learnで複数モデルを多数決で統合する
from sklearn.ensemble import VotingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.tree import DecisionTreeClassifier
model = VotingClassifier(estimators=[
("lr", LogisticRegression()),
("svc", SVC(probability=True)),
("dt", DecisionTreeClassifier()),
], voting="soft")
model.fit(X_train, y_train)利点
- 単体のモデルと比べて過学習しにくく、汎化性能が向上しやすい
- バギング・ブースティング・スタッキング等、目的に応じて多様な組み合わせ方を選択できる
- モデルの多様性を高めるほど、個々のモデルの弱点を補い合いやすい
欠点
- 複数のモデルを学習・保持する必要があり、単体のモデルと比べて学習・推論のコストが増加する
- 個々のモデルの判断根拠は追えても、組み合わせ全体としての説明性は低下しやすい
- 組み合わせるモデルの性質が似通っていると、多様性による性能向上効果が薄れる
比較
関連用語
よくある質問
バギングとブースティングの違いは?
バギングは複数のモデルを並列に独立して学習させ多数決・平均で統合するのに対し、ブースティングはモデルを順番に学習させ、直前までの誤りを次のモデルで補正していく。
アンサンブル学習は常に単体モデルより優れる?
多くの場合精度は向上するが、学習・推論コストの増加や説明性の低下というトレードオフがあり、要件によっては単体モデルの方が適することもある。
参考文献
- Documentationscikit-learn: Ensemble methods