サポートベクターマシン

SVM

SVM(Support Vector Machine)は、機械予測の分野でよく利用されるモデルである。各データが、あるクラスに属するか、属さないかを推定する際に用いる。例えば、あるタンパク質のアミノ酸配列を入力し、このタンパク質が膜タンパク質なのか、そうではないのかを予測する。

「あるクラス」と「そうでないクラス」の間には超平面で隔離することができる。そのため、SVM を利用する場合、まず超平面がどこにあるかを学習させる必要がある。

  1. 「あるクラス」に含まれる正例と「そうでないクラス」に含まれる負例をたくさん用意する。
  2. 正例と負例を SVM に入力します。SVM は正例と負例を学習し、超平面を計算する。
  3. 超平面 f を出力する。

学習が終えると、超平面を表す関数 f が出力されます。この f を利用して、予測を行う。

例えば、ある未知のデータ x に対して、そのクラスを予測しようとする。f(x)>0 ならば正であり、f(x)<0 なら負と予測することができる。

x が 2 次元のデータの場合、超平面 f は直線になる。

SVMの予測イメージ

分類関数

超平面を表す関数 f は、分類関数と呼ばれている。学習データの集合を X={x1, x2, ..., xn} とし、xi を d 次元上に点する。このとき、分類関数は d 次元のベクトル w と実数 b を利用して、次のように表せる。

\[ f(\mathbf{x}) = \mathbf{w}\cdot\mathbf{x} + b \]

x を代入し、f(x)>0 ならば x は正と推測し、f(x)>0 ならば負とクラス分けができる。

SVM の分類

超平面は、様々な方法で計算することができる。代表的なアルゴリズムは次に示す。

制約を満たさない正例と負例を除いて||w||を計算する方法制約を満たさない正例と負例を除かないで、代わりにペナルティを課して、||w||を計算する方法
線形問題として||w||を計算する方法ハードマージンSVMソフトマージンSVM
ラグランジェの未定係数法を利用して、||w||計算する方法ハードマージンSVM(双対版)ソフトマージンSVM(双対版)
カーネル関数を利用して、||w||を計算する方法ソフトマージンSVM(カーネル版)