next up previous contents
次へ: 素性 上へ: Support Vector Machineへの適用 戻る: Support Vector Machineへの適用   目次

Support Vector Machine

サポートベクトルマシン法は, 空間を超平面で分割することにより 2つの分類からなるデータを分類する手法である. このとき,2つの分類が正例と負例からなるものとすると, 学習データにおける正例と負例のマージン(間隔)を大きくとるほど分類器の誤りが減少するという考えから, このマージンを最大にする超平面を求めそれを用いて分類を行う. 一般的に上記の方法の他に,「ソフトマージン」と呼ばれる 学習データにおいてマージンの内部領域に少数の事例が含まれてもよいとする手法の拡張や, 線形分離が不可能な問題に対応するために, 超平面の線形の部分を非線型にする拡張(カーネル関数の導入) がなされたものが用いられる. この拡張された方法は,以下の識別関数を用いて分類することと等価であり, その識別関数の出力値が正か負かによって 二つの分類を判別することが可能である.
$\displaystyle f({\bf x})$ $\textstyle =$ $\displaystyle sgn \left( \sum^{l}_{i=1} \alpha_i y_i K({\bf x}_i,{\bf x}) + b \right)$ (3.1)
$\displaystyle b$ $\textstyle =$ $\displaystyle -\frac{max_{i,y_i=-1}b_i + min_{i,y_i=1}b_i}{2}$  
$\displaystyle b_i$ $\textstyle =$ $\displaystyle \sum^l_{j=1} \alpha_j y_j K({\bf x}_j,{\bf x}_i)$  

ただし,${\bf x}$ は識別したい事例の文脈(素性の集合)を, ${\bf x}_{i}$ $y_i(i=1,...,l, y_i\in\{1,-1\})$は 学習データの文脈と分類先を意味し,関数 $sgn$ は,
$\displaystyle sgn(x) \, =$ $\textstyle 1$ $\displaystyle (x \geq 0)$ (3.2)
  $\textstyle -1$ $\displaystyle (otherwise)$  

であり,また,各$\alpha_i$は式([*])と式([*])の制約のもと 式([*])の$L(\alpha )$を最大にする場合のものである.
$\displaystyle L({\alpha})$ $\textstyle =$ $\displaystyle \sum^l_{i=1} \alpha_i - \frac{1}{2} \sum^l_{i,j=1} \alpha_i \alpha_j y_i y_j K({\bf x_i},{\bf x_j})$ (3.3)


$\displaystyle 0 \leq \alpha_i \leq C \, \, (i=1,...,l)$     (3.4)


$\displaystyle \sum^l_{i=1} \alpha_i y_i = 0$     (3.5)

また,関数$K$ はカーネル関数と呼ばれ,様々なものが 用いられるが本稿では以下の多項式のものを用いる.
$\displaystyle K({\bf x},{\bf y})$ $\textstyle = ({\bf x}\cdot{\bf y} + 1)^d$   (3.6)

$C,d$は実験的に設定される定数である. 本稿ではすべての実験を通して$C$を 1 に $d$を 2 に固定した. ここで,$\alpha_i > 0$ となる ${\bf x}_i$ は, サポートベクトルと呼ばれ,通常,式([*])の和をとっている部分は この事例のみを用いて計算される. つまり,実際の解析には学習データのうちサポートベクトルと 呼ばれる事例のみしか用いられない.


next up previous contents
次へ: 素性 上へ: Support Vector Machineへの適用 戻る: Support Vector Machineへの適用   目次
平成23年3月2日