アンサンブル学習#
アンサンブル学習(ensemble learning) は複数のモデル(学習器)を組み合わせて予測精度を向上させる手法の総称。
Bagging#
Bootstrap AGGregatINGの略で、bootstrapによって複数のモデルを学習させ、予測結果をaggregating(例えば平均や多数決)する方法。
決定木のBaggingであるRandom Forestが有名。
Boosting#
ブースティング(boosting)はKearns (1988)の「(0.5よりわずかに正解率が高い程度の)弱い学習器を使って強い学習器を作ることはできるか?」という仮説(boosting hypothethis)から生まれた
The strength of weak learnability#
初期のBoostingの研究では、現代のものとはやや異なるアプローチをとっていた
Schapire (1990) The strength of weak learnability. は以下の方法を提案
分類器
を 個のサンプルで訓練する で分類に失敗したサンプルと正しく分類できたサンプルを半々にした 個のサンプルで を訓練する と で分類結果が一致しない 個で を訓練するブーストされた分類器
は の分類結果の多数決で分類を行う
AdaBoost#
Freund & Schapire (1997) により AdaBoost というアルゴリズムが提案され、性能の高さから広く普及した。
アルゴリズム(AdaBoost)
訓練データ:
初期化:
弱学習器を分布
で訓練し、仮説 を得る。目的:重み付き誤差
が低い を選ぶこと仮説の信頼度
を定める について分布(重み)を更新するここで
は を分布とするための正規化係数(normalization factor)
出力:
最終的な仮説(判別器)は
なお対数誤差を最小化する予測確率は対数オッズに等しい。
あるいは等しい別の表現として
となる。
Gradient Boosting Machine#
Friedman, J. H. (2001) はAdaBoostを一般化して勾配ブースティング(gradient boosting)というアルゴリズムに整理した。
勾配ブースティングは誤差の勾配に対して適応的に学習する手法。例えば二乗誤差なら勾配は残差のことなので、
AdaBoostは誤差関数を指数誤差
勾配ブースティングは決定木と相性が良く、勾配ブースティング決定木(gradient boosted decsision tree: GBDT)として非常に広く使われている。計算量を抑えて学習を高速化する工夫が取られたモダンなGBDTにはXGBoostやLightGBMなどがあり、2024年現在でもテーブルデータの予測においてSOTAと評価されている。
Stacking#
stacking (元の論文では stacked generalization )は、複数のモデルの予測値を入力(特徴量)として扱い、また別のモデルを使って予測値を構築する、階層的なモデルを構築するアプローチ。
Kaggleでは昔からよく使われ、例えばGBDTベースのモデルを数十個、NNベースのモデルを数十個つくってstackingしまくって精度を上げる、みたいなことをする。
実務では使われているケースを見ない
Wolpert, David H (1992). “Stacked generalization”. In: Neural networks 5.2, pp. 241– 259.