逐次最小問題最適化法クラス | サポートベクターマシンの訓練のための最適化アルゴリズム(英語版) |
---|
最悪計算時間 | O(n³) |
---|
逐次最小問題最適化法(英: Sequential Minimal Optimization, SMO)はサポートベクターマシン (SVM) の訓練で生じる2次計画問題 (QP) を解くためのアルゴリズムである。1998年にマイクロソフトリサーチのJohn Platt(英語版)によって発明された[1]。SMOはサポートベクターマシンの訓練のために広く使われ、人気のLIBSVMツールによって実装される[2][3]。以前から利用できたSVM訓練法はより一層複雑で、高価なサードパーティーのQPソルバーを必要としたので、1998年のSMOアルゴリズムの公表はSVMコミュニティでたくさんの興奮を引き起こした[4]。
最適化問題
データセット (x1, y1), ..., (xn, yn) に関する二項分類問題を考える。ここで xi は入力ベクトル、yi ∈ {-1, +1} はそれに対応する2値ラベルである。ソフトマージンサポートベクターマシンは以下の双対問題で表される2次計画問題を解くことによって訓練される:
ここで C は SVM hyperparameter、K(xi, xj) はカーネル関数(英語版)で、どちらもユーザが与える。変数 はラグランジュ乗数である。
アルゴリズム
SMOは上記の最適化問題を解くための反復型アルゴリズムである。SMOはこの問題をその時解析的に解かれる一連の最小の可能な部分問題に分割する。ラグランジュ乗数 を伴う線形等式制約のため、最小の可能な問題はそのような2つの乗数を含む。そして、任意の2つの乗数 、 について、次の制約に分解される:
は前述の和の等式より導かれる定数である。そしてこの問題は解析的に解くことができる。
アルゴリズムは次のように進行する:
- 最適化問題のKKT条件を破るラグランジュ乗数 を見つける。
- 第2の乗数 を選び、組 を最適化する。
- 収束するまでステップ1、2を繰り返す。
すべてのラグランジュ乗数がKKT条件を十分に満たすとき、全体の最適化が終了する。このアルゴリズムは収束することが保証されている。しかし、データセットが大きくなると、組 の選び方がで大きくなるので、より速く収束させるために、部分問題を構成する変数を選び出すためのヒューリスティックを使うことが重要となる。
関連項目
参考文献