前回、前々回と PRML の内容を追って来ましたのでここで再び復習を兼ねてまとめてみたいと思います。
カーネル法 (kernel method)
内積だけを用いて学習や分類をおこなうことを カーネル法 (kernel method) と言い、事例の対を引数として高次元の内積を与える関数を カーネル関数 (kernel function) と言います。
多項式カーネル (polynomial kernel) では 2 つのベクトル x_i と x_j に対して次のような値を与えます。
K_{poly}(x_i, x_j) = (x_i・x_j + r)^d
これに対し昨日出てきた RBF カーネルでは次のように定義されます。 s は正の定数です。
K_{RBF} (x_i, x_j) = exp(-s|x_i - x_j|^2)
サポートベクトルマシン
古典的な線形二値分類器であり、カーネル法と組み合わせることで非線形な分類も可能となります。
訓練データ D を {(x_1, y_i), (x_2, y_2), ... ,(x_D, y_D)} という素性ベクトルだとし、正例のクラスラベルを +1 、負例のクラスラベルを -1 としたとき、線形分類器であるので分離平面の方向ベクトル w と切片 b をパラメータとして次式の関数で導かれます。
f(x) = w・x-b
マージン最大化については以前に説明した通りです。最適化問題は ||w||^2 を最小化する問題に帰結するのを思い出しましょう。
多値分類器への応用
正例、負例だけでなくクラス数が 3 以上あるような問題に対してサポートベクトルマシンを適用したい場合には色々な方法がありますがここでは 2 つを紹介します。
- one-versus-rest 法 : 各クラスについて分離平面を作り、 2 つ以上のクラスについて正例となった場合は関数距離の大きいクラスに分類します。
- ペアワイズ法 : クラスペアごとにそれぞれの分離平面を作ります。結果として分離平面は n(n-1)/2 個となります。
参考
言語処理のための機械学習入門 (自然言語処理シリーズ)
http://www.amazon.co.jp/dp/4339027510