サマリ
過去の記事で、AdaBoostのアルゴリズムをざっくり説明しました。
aisinkakura-datascientist.hatenablog.com
本記事は、下記のトピックについて書いていこうと思います。
- AdaBoostは前向き段階的加法的モデリングを用いて、指数損失の最小化問題を解くことと同値的である。
- 指数損失とは、 で表現される損失関数のことである。
なお、本記事では、上記サマリの細かい箇所から説明していこうと思います。つまり、「基底関数展開→前向き段階的加法的モデリング→指数損失→AdaBoostが前向き段階的加法的モデリングを用いて指数損失を最小化する問題と同値的である」という順番で説明していきます。
基底関数展開
基底関数展開とは、ある関数を複数の基底関数で展開することを表します。 数式で書くと以下のようになります。
ここで、は基底関数と呼ばれる関数、はを決定するパラメータ、は展開係数と呼ばれるパラメータです。
基底関数展開の具体的な数式に、区分多項式があります。区分多項式の例としては、下記のようなものがあります。
曲線等を描く関数に対して、
を用いて、
と展開する手法が基底関数展開です。ここでは、となっています。
区分多項式については、以前まとめたことがあるのでご興味あれば見て頂けると幸いです。 aisinkakura-datascientist.hatenablog.com
前向き段階的加法的モデリング
前向き段階的加法的モデリングとは、に対して、を近似的に最小化するアルゴリズム*1の一つです。
前向き段階的加法的モデリングのアルゴリズムは非常にシンプルです。過去に得られた基底関数を基に、その段階で最も損失関数を小さくするような次の基底関数を逐次的に見つけていくというアルゴリズムになっています。具体的には、図1に記載します。
指数損失関数
指数損失関数とは、下記のような式で表現される損失関数です。 ただし、今回は二値分類問題を解くことを前提とし、とします。
AdaBoostが前向き段階的加法的モデリングを用いて、指数損失を最小化する問題と同値的であることの証明
証明の前に、証明の前提と目的を整理しておきます。
- 前提
- 二値分類を考える。したがって、とする。
- は二値分類の弱分類器とする。
- 損失関数は指数損失とする。
- とする。
- 目的
- 前向き段階的加法的モデリングの更新式がAdaBoostの更新式と一致すること。
まず最初に、前向き段階的加法的モデリングの更新式(2-1)を指数損失を用いて陽に書くと、
となります。ここで、とすると、(2)式は、
となります。ここで、を用いると、のとき、、のとき、となります。これを用いると、(3)式は、
となります。ここで、
を(4)式に代入し、整理すると
となります。
についての最小化
ここからは、先に(5)式をについて最小化し、その後について最小化することを考えます。
(5)式の第一項は、とは無関係です。したがって、について最小化する際には、第二項のみを検討します。第二項について、任意のに対して、となります。したがって、
となります。これは、AdaBoostにおいて、の重み付き誤差を最小にする分類器を得ることと対応しています。
についての最小化
(6)式を(5)式に代入し、さらにについて微分した式とすることで、
となります。これより、
が得られます。ただし、
です。
重みの更新式
ここまでで得られたを用いることでAdaBoostにおける重みの更新式を得ることができます。前向き段階的加法的モデリングの2-2から、です。また、重みの定義からです。この二式を用いると、
が得られます。ここで、より
なる。ここで、は全ての標本に同じ値を書けているので不要である*2。よって、として重みの更新式は、
となる。
以上より、AdaBoostが前向き段階的加法的モデリングを用いて、指数損失を最小化する問題と同値的であることが証明できました。ちなみに、このことが発見されたのは、AdaBoostが提案されてから5年後のことだったようです。この発見により、AdaBoostの数学的性質を調べることができることになったそうです。
次回の記事のトピック
ここまで、AdaBoostの理論的な面について勉強してきました。次の記事では、ライブラリを使わずにAdaBoostを実装することをトピックにしようと思います。