サマリ
- 本記事は、分類問題を解くための機械学習手法の一つであるAdaBoostについて解説した記事です。AdaBoostとは、機械学習の手法の中でもブースティングに分類される手法です。
- ブースティングとは、次の2段階からなるアルゴリズムです。
- 前に学習した分類器を基に、より良い分類器を作成し、多数の分類器を作成する。
- 作成した多数の分類器の合議を取り、分類を行う。
- ブースティングとは、次の2段階からなるアルゴリズムです。
- AdaBoostは、「前向き段階的加法的モデリング」において指数損失を最小化する問題と同値的であることが、AdaBoostが提案された5年後に発見されました。
本記事では、AdaBoostのアルゴリズムについて説明したいと思います。AdaBoostが「前向き段階的加法的モデリング」における指数損失を最小化する問題と同値的であることについては、次の記事のトピックにしようと思います。
なお、本記事は下記の書籍とQiitaの記事を参考にしています。
AdaBoostのアルゴリズム
まず最初に、AdaBoostの目的について述べます。
特徴量が、目的変数がであるデータに対して、誤分類率
を小さくする分類器を見つけることがAdaBoostの目的です。
次にAdaBoostの考え方について述べます。
まず最初に、ランダムな予測よりは少しマシな分類器を考えます。これをとします。この分類器単体で予測しても、ランダムな予測より少しマシなだけなので、使い物にはなりません。そこで、よりさらにマシと思われる分類器を作成します。
以上のように、少しマシな分類器を作成することを目指して、多数の分類器を作成していきます。そして作成した分類器の列の合議をとって、最終的な予測を作ります。
なお、最後に作成された分類器単体を使うのではなく、分類器の列全体を使って合議をとる理由としては、分類器を更新する際に必ずしもマシな分類器が作成されるとは限らないためです。マシな分類器を作成することを目指しますが、必ずしもマシになるとは限らないということで、分類器の列全体の合議をとるのです。
次にAdaBoostのアルゴリズムを数式を用いて具体的に記述し、その数式の意味について記載します。ただし、アルゴリズム中のsign
は、入力が正であれば1を、負であれば-1を返す関数です。
アルゴリズム中に出てくる数式の意味をざっくり説明していきます。
まず、ですが、これは重みづけをした誤分類率を表します。重みが初期状態のとき、つまりのときは、一般的な誤分類率と同じ式になります。
次に、ですが、少し式変形するととなります。このことから、に対して、が単調減少になっていることがわかります。したがって、誤分類率が大きい分類器に対しては、が小さくなり、誤分類率が小さい分類器では、が大きくなります。これにより、3の合議において、正しく予測できている分類器の影響が大きくなり、誤って予測している分類器の影響が小さくなるようになっています。
最後に、重みについて説明します。重みは次のように変形することができます。
したがって、正しく予測された標本の重みは更新の際に値が変わることはありません。また、誤って予測された標本の重みについては、以下のように考えることができます。
基本的には、ランダムな予測よりも良い分類器を作成する
→となる
→となる
以上のことから、誤って分類された標本の重み は、大きくなります。決定境界近くの標本の解像度を高くするイメージです。
以上で、AdaBoostのアルゴリズムに関するざっくりとした説明は終了です。次の記事では、AdaBoostは「前向き段階的加法的モデリング」において指数損失を最小化する問題と同値的であることをトピックにしようと思います。
次回記事は下記
aisinkakura-datascientist.hatenablog.com