SMOとは
SMO(逐次最小問題最適化法)はサポートベクトルマシンの訓練で生じる2次計画問題を解くためのアルゴリズムです。
1998年にマイクロソフトリサーチのJohn Plattによって発明されました。
SMO概要
以下を繰り返します。
1: ある基準にもとづきインデックスを選択します 。
2: だけを動かして最適化します。
※以下で、2から先に説明します。
2: の最適化
ハードマージンの双対問題は以下でした。
目的関数をインデックスとそれ以外に分離します。
の3行目から4行目の式変形でを用いました。
をの2次式とみて、次のようにおきます。
より、
となります。
制約条件を分離します。
でとおきました。
に代入して、についてまとめます。
のの係数を計算します。
のの係数を計算します。
の3行目で式を一時的に見やすくするためにとおきました。
とおくと、は以下のようになります。
をで微分してとおきます。
より、の更新式は以下のようになります。
1: の決定方法
先にの決定方法を紹介します。
ただし、は、以下であるとします。
目的関数に不等式制約のラグランジュ未定乗数法を適用します。
KKT条件は、以下のようになります。
をで偏微分して、とおきます。
を成分に着目します。
のとき、の不等式より
が成り立ちます。
また、のとき、KKT条件より、が成り立つので、より
が成り立ちます。
をまとめると、以下のようになります。
さらにまとめると、
となります。
最適解はを満たします。の不等式を満たす場合、処理終了します。
の不等式を満たさない場合は、によって、を決定し、を更新します。
が求まったら、こちらの記事よりが求まります。
動画
本記事作成前に作成した動画なので、内容が異なる可能性があります。