サポートベクターマシン
サポートベクターマシンとは
サポートベクターマシン(SVM)は、教師あり学習と呼ばれる機械学習の手法の一つです。二値分類・マルチクラス分類などの分類や、回帰に用いられます。訓練データから、各データ点との距離が最大となるマージンを最大化する超平面(分離超平面)を求め、パラメータを学習します。
サポートベクターとは、超平面との距離が最も近いデータの集合です。1963年に線形SVMが考案され、1992年に非線形に拡張されて応用が広がりました。
学習はラグランジュの未定乗数法とカルーシュ・クーン・タッカー(KKT)条件を用いて、最適化問題の一種である凸二次計画問題を解きます。多くの学習モデルが複数の局所最適解をもつのに対し、SVMは唯一の大域的最適解をもつため優位性になっています。
非線形SVMでは、データサンプルを高次元空間へ写像し、特徴空間上で線形分離を行います。「正定値カーネルであれば、このカーネルが特徴空間中での内積となるような変換が存在する」(マーサーの定理)を満たすカーネル(類似度)関数を用います。
これにより、高次元空間での内積は、簡易に計算できます(カーネルトリック)。カーネルが対応する空間での超平面は、元の空間では非常に複雑な分類曲面に対応します。
よく使われるカーネル関数には、線形カーネルと非線形なガウスカーネルがあります。超平面が直線である線形カーネルは、同じ分類器であるロジスティック回帰に似た挙動を示します。
一般に、データのサンプル数が少ない場合には線形カーネルが、サンプル数が比較的多い場合にはガウスカーネルが有効とされます。
非線形カーネルには他に
- 多項式カーネル
- 文字列カーネル
- カイ2乗カーネル
- ヒストグラム交差カーネル
などがあります。カーネル関数の定義により、文字列やグラフといった非数値データにも応用できます。
SVMのデータ分布による区別では、はっきり分かれることを前提としたマージンを「ハードマージン」、誤判別を許すことを前提としたマージンを「ソフトマージン」とそれぞれ呼びます。このような分類誤りの許容度はコストパラメータで調整します。
SVMは1990年代以降、その強力な分類精度から流行しました。
しかしながら、カーネル法は大規模データになると計算が遅くて使えないという致命的欠点がありました。このことから、後に大規模データに強いニューラルネットワークが代わって主流となりました。この問題には、2007年の乱択化フーリエ特徴関数の登場などによるカーネル法の高速化で、大規模データへの対処が試みられています。