サポートベクターマシン

サポートベクターマシンとは

サポートベクターマシン(SVM)は、教師あり学習と呼ばれる機械学習の手法の一つです。二値分類・マルチクラス分類などの分類や、回帰に用いられます。訓練データから、各データ点との距離が最大となるマージンを最大化する超平面(分離超平面)を求め、パラメータを学習します。
サポートベクターとは、超平面との距離が最も近いデータの集合です。1963年に線形SVMが考案され、1992年に非線形に拡張されて応用が広がりました。

学習はラグランジュの未定乗数法とカルーシュ・クーン・タッカー(KKT)条件を用いて、最適化問題の一種である凸二次計画問題を解きます。多くの学習モデルが複数の局所最適解をもつのに対し、SVMは唯一の大域的最適解をもつため優位性になっています。


非線形SVMでは、データサンプルを高次元空間へ写像し、特徴空間上で線形分離を行います。「正定値カーネルであれば、このカーネルが特徴空間中での内積となるような変換が存在する」(マーサーの定理)を満たすカーネル(類似度)関数を用います。
これにより、高次元空間での内積は、簡易に計算できます(カーネルトリック)。カーネルが対応する空間での超平面は、元の空間では非常に複雑な分類曲面に対応します。

 

よく使われるカーネル関数には、線形カーネルと非線形なガウスカーネルがあります。超平面が直線である線形カーネルは、同じ分類器であるロジスティック回帰に似た挙動を示します。
一般に、データのサンプル数が少ない場合には線形カーネルが、サンプル数が比較的多い場合にはガウスカーネルが有効とされます。

非線形カーネルには他に

  • 多項式カーネル
  • 文字列カーネル
  • カイ2乗カーネル
  • ヒストグラム交差カーネル

などがあります。カーネル関数の定義により、文字列やグラフといった非数値データにも応用できます。


SVMのデータ分布による区別では、はっきり分かれることを前提としたマージンを「ハードマージン」誤判別を許すことを前提としたマージンを「ソフトマージン」とそれぞれ呼びます。このような分類誤りの許容度はコストパラメータで調整します。

 

SVMは1990年代以降、その強力な分類精度から流行しました。

しかしながら、カーネル法は大規模データになると計算が遅くて使えないという致命的欠点がありました。このことから、後に大規模データに強いニューラルネットワークが代わって主流となりました。この問題には、2007年の乱択化フーリエ特徴関数の登場などによるカーネル法の高速化で、大規模データへの対処が試みられています。