AI(人工知能)用語集

機械学習を学ぶ人は知っておくべきアルゴリズムAdaBoostとは?

AdaBoost

機械学習アルゴリズムには様々なものがありますよね。その中でも本記事ではAdaBoost(アダブースト)というモデルについて解説していきます。

現在のKaggleなどのデータサイエンス系のコンペティションでは勾配ブースティング系アルゴリズムが広く利用されています。この勾配ブースティング系アルゴリズムの走りとなったブースティング系の代表的なモデルがAdaBoostですので、このモデルを理解することで現在流行しているXGBoostやLightGBM、CatBoostのようなモデルを理解する助けとなることでしょう。

AdaBoostの概要

AdaBoostはブースティング系アルゴリズムのひとつであり、1996年に提案されました。

A desicion-theoretic generalization of on-line learning and an application to boosting

ブースティングアルゴリズムは複数の弱識別器をつなげて学習を直列に行い、直前の識別器の出力を参考に学習を進めていきます。その弱学習器をまとめてひとつの機械学習モデルとして予測などを行います。

AdaBoostでは直列につなげる際に、直前の弱識別器で誤ったサンプルに対する重みを大きくして学習を行います。重みを大きくすることで、直前の弱識別器が識別できなかったサンプルを重点的に学習を進めることができ、また弱識別器モデルの多様性を生み出すことができるんですね。

また推論時には各弱学習器の重み付平均を計算します。

AdaBoostアルゴリズム

本章ではAdaBoostの具体的なアルゴリズムの解説をしていきましょう。

大まかには直列につなぐある弱識別器に対する重みを決定し、その重みに基づいて弱識別器を学習し、その学習結果をもとに次の弱識別器の重みを決定する、という流れを弱識別器の数m個に対して繰り返すだけのシンプルなものです。

誤りに対する重みを大きくして誤りに対して優先的に学習していくアルゴリズムであるため、弱識別器の数mを大きくすればするほど、過剰適合しやすくなるため注意が必要です。
  1. 最初の弱識別器の学習データに対する重みを以下の値で初期化します。Nは学習データの数で、2つめ以降の弱識別器ではこの重みを更新することで、以前の弱識別器が識別できなかった問題に対して優先的に学習を進めることができます。ここでは直列に学習を進める最初の重みであるため、全ての学習データに対して平等な重みを設定しています。adaboost
  2. 弱識別器を以下の誤差関数を最小化するように学習します。2値分類問題を正解した場合は1、正解しなかった場合は0と評価し、それらに先ほど決定した学習データに対する重みをかけて誤差を計算します。
  3. 学習した弱識別器に対する重みを以下の式で決定します。②の式から分かるように、誤差Eは常に0から1の間の値をとります。またこの重みは次の弱識別器における学習データに対する重みを決定することと、最終的な推論におけるある弱識別器の優先度を決定するために用いられます。adaboost
  4. 学習データに対する重みを以下の式で更新します。expの内部でマイナスをとっているため、不正解した数が多いほど次の弱識別器が学習を行う際の重みが大きくなっていくことがわかります。
  5. ②から④をm個の弱識別器について繰り返します。このように直前の弱識別器の結果を受けて次の弱識別器の学習を行うため、ブースティング系のアルゴリズムが直列に学習を行うと呼ばれます。

AdaBoostの推論

AdaBoostの推論ではm個の弱識別器の重み付き平均を利用し、以下の式で表される形で推論を行います。AdaBoostでは学習は直列に行われますが、推論自体は各弱識別器の単純な重み付き平均であるため、直列に何かを行うということはありません。

また各弱識別器の重みは誤差が大きくなればなるほど小さくなるため、より学習データに適合できたものを優先しながら予測を行っているということがわかります。

この式からも分かるとおり、AdaBoostは2クラス分類器であるため多クラス分類に対応するためにはK-1個のモデルを用意し、それぞれのモデルで1クラス対他の全クラスの分類を行う必要があります。

まとめ

AdaBoostについて重要な点をまとめましょう。

  • 弱識別器を利用し、学習を直列に行うブースティングアルゴリズムの代表的なモデル
  • 各弱識別器の学習で、直前の弱識別器がうまく学習できなかったものを優先的に学習するアルゴリズムになっている
  • 基本的に2クラス分類に対するモデルなので、多クラス分類に対応するためにはクラス数-1の数のモデルを用意する必要がある
以上、ご覧いただきありがとうございました。

燃やせ探究心!突き詰めろ美しきソースコード!オタフ☆クラブ

みんなのAI(人工知能)用語集

トップへ戻る
タイトルとURLをコピーしました