機械学習5:サポートベクターマシーン
要点まとめ
次元ベクトルの分類を行うために、パラメータを用いての符号で分類する。 分類境界から最も近いベクトルをサポートベクトルといい、分類境界とサポートベクトルとの距離をマージンという。
分類誤りを許さない分類をハードマージンといい、スラック変数 を用いて誤りを許容する分類をソフトマージンと言う。
誤りを小さくしつつ、マージンを最大化するを求める最適化問題(主問題)は、ラグランジュ関数を導入することで、より変数の少ない双対問題に置き換えられる。
非線形分類を行う場合は写像する関数を用いて高次元空間に写像した双対問題を解くことになるが の計算コストが膨大で現実的は計算困難。ここでカーネル関数に置き換えることで計算コストを大幅に下げることが可能になる。
実装演習
2クラス分類の分類境界
決定関数
特徴ベクトル と同じ次元のパラメータ を用いて決定境界を決める決定関数を下記のように表す。
決定関数を用いて下記のような2クラス分類を考える。
が2次元の場合、決定関数は下記のようになる。
線形サポートベクトル分類 (ハードマージン)
線形分離可能な場合、分類境界から最も距離が近い訓練データをサポートベクトルと言い、サポートベクトルと分類境界との距離をマージンと呼ぶ。
マージンが最大となる分類境界を求める。
サポートベクトルと分類境界との距離は、のL2ノルム を用いて、次のように表せる。
分類境界から最も近くにあるサポートベクトルとの距離は、下記のように表せる。
マージンを最大化するには、下記の問題を解けば良い。
更に式を変形すると、ハードマージンの場合は下記を解けば良いことになる。
, ただし、すべてのに対して
線形サポートベクトル分類 (ソフトマージン)
完全には分類不可能な、多少の誤りを許す分類を、ハードマージンに対してソフトマージンと言う。ソフトマージンはでは誤りを許容する非負の変数スラック変数 と正則化係数とを用いることで、下記のように表せる。
SVMにおける双対表現
これまでの最適化問題を、主問題 と呼び、主問題と等価な双対問題を解くことが一般的。双対問題を解くメリットは下記。
- 変数を少なくできる
- 分類境界の非線形化を考える上で、双対問題の方が有利。
双対問題を考える上では、新たな非負の変数を用いてラグランジュ関数を導入。
ラグランジュ関数を用いて、主問題は下記のように表せる。
SVM分類の場合は下記のような強双対性が成り立ち、右辺のような双対問題に置き換えることができる。
最初に双対問題のの最小化を行うためにラグランジュ関数の偏微分を求める。
これの最適解を用いて双対問題を書き直すと、結局下記のようにが消えてのみの関数となる。
カーネルを用いた非線形分離への拡張
線形分離が不適切な問題に対しては、
のような高次元データへの拡張 ( 写像 )を用いる。
一般的にな次元を次元へ写像する関数は、下記のように表せる。
これを用いて、ソフトマージンの双対問題は下記のように拡張できる。
現実的にの計算が膨大で解くことが困難だが、カーネル関数
に置き換えることで、下記のような形になり、計算コストを削減できる。
主なカーネル関数
- シグモイドカーネル