LoginSignup
7
10

More than 3 years have passed since last update.

データ分析コンペで使われるアンサンブル学習手法概要

Posted at

データ分析コンペで使われるアンサンブル学習手法概要

kaggleなどのデータ分析コンペ成績上位者が、
当たり前のように使っているアンサンブル学習手法の概要を記載していきます。
(順次、更新・充実させていきます)

記事のターゲット

 ・機械学習にふれたことがある方
 ・アンサンブル学習の概要だけ知りたい方

参考URL

機械学習上級者は皆使ってる?!アンサンブル学習の仕組みと3つの種類について解説します
https://www.codexa.net/what-is-ensemble-learning/

アンサンブル学習について勉強したのでまとめました:Bagging / Boosting / Stacking
https://www.st-hakky-blog.com/entry/2017/07/28/214518

アンサンブル学習(Ensemble Learning)とは

複数の学習モデルを融合させて、汎化能力を向上させる手法です。
アンサンブルとは、wikipediaより"音楽用語で2人以上が同時に演奏すること"
あります。(https://ja.wikipedia.org/wiki/アンサンブル)
アンサンブル学習とは複数が集まって良い結果を出しましょうという、3人寄れば文殊の知恵の発想ですね。

バイアスとバリアンスについて

まず、アンサンブル学習の前にバイアスとバリアンスについて説明する必要があります。バイアスとバリアンスは何かといいますと、

■バイアス
 学習器が導き出した予測値と観測値との誤差

■バリアンス
 学習器が導き出した予測値の分散(散らばり具合)

わかりやすいイメージ図は、
本記事の参考文献"https://www.codexa.net/what-is-ensemble-learning/"
に記載されています。

ここで大事なのは、バイアスとバリアンスはトレードオフの関係にあることです。例えば、

バイアスが大きい:

■原因例:学習器の表現力不足(例:非線形の観測値に対して1次の線形回帰で予測した)
■解釈:学習器の表現力が不足しているということは、新しい訓練データで学習させても、表現力不足のため予測値はたいして変わらないだろう。
つまり、バリアンスが小さい

バリアンスが大きい:

■原因例:訓練データに対して過学習している
■解釈:過学習しているので、訓練データ毎に十二分に適合した予測値を出し、予測値は大きく異なるだろう。
だが、訓練データ毎に十二分に適合するということは、新しい訓練データで学習させても予測値と観測値との誤差は少ないだろう。
つまり、バイアスが小さい

よりよい学習器を作成するためには、学習器の表現不足も
過学習も避けなければなりません。つまり、バイアスとバリアンスのちょうどよい位置を見つける必要があります。
そこで、アンサンブル学習という手法が使われます。

ここから、アンサンブル学習である3つの代表的な手法
(バギング、ブースティング、スタッキング)について記載していきます。

バギング(Bagging)

一般的に、モデル予測結果のバリアンスを低くすることができます。

訓練データをブートストラップ標本(復元抽出)で選択し、
元の訓練データとは異なる訓練データを多数作成します。

解く課題がクラス分類の場合、複数の識別機で学習し予測結果の多数決をとります。
回帰の場合は、予測結果の平均をとることが一般的です。

手法例

・ランダムフォレスト
 (https://ja.wikipedia.org/wiki/ランダムフォレスト)
 弱学習器を決定木とした、アンサンブルした手法。
 バギングを改良し、各識別器で使用する特徴量を、
 あらかじめ決められた数だけランダムに選択する手法です。

・ディープ・フォレスト
 (https://ja.wikipedia.org/wiki/ディープ・フォレスト_(機械学習))
 ランダムフォレストをさらに多層にしたアルゴリズムです。

ブースティング(Boosting)

一般的に、モデルの予測精度に対してバイアスを下げることができます。

ベースラインとなるモデルを作成し、
間違った予測に焦点をあて、つまり「重み」を加味して、
新たに追加される弱い学習機は間違った予測を重点的に見るようにする仕組みです。

ブースティングで、勾配情報を用いているものを勾配ブースティング(Gradient Boosting)と呼びます。
Kaggleで上位に食い込む強者は、半数以上が勾配ブースティングを用いているらしいです。

手法例

・AdaBoost
 (https://ja.wikipedia.org/wiki/AdaBoost)

・XGBoost
 勾配ブースティングとランダムフォレストを組み合わせたアンサンブル学習。

・LightGBM
 Microsoftが開発している、決定木アルゴリズムに基づいた勾配ブースティング。

スタッキング(Stacking)

モデルを順次積み上げていく方法です。

仮に、2段階のモデルであった場合、
まず、1段階目のモデルで学習して予測結果をだし、
2段階目のモデルでは1段階目のモデルの予測結果を特徴量として、モデリングを行います。

最後に

概要にとどまったので、順次更新してまいります...

7
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
10