ラビットチャレンジ【機械学習】~サポートベクトル・マシン~

概要

機械学習モデルの1つであるサポートベクトル・マシン(以下、SVM)について学習した

この章では以下の項目を学んだ

SVMの基礎

・マージンの最適化問題

・不等式制約付き最適化問題

カーネルトリック

・不等式制約付き最適化問題を手計算(appendix)

SVMの基礎

SVMとは2クラス分類モデルの代表的な1つである。回帰問題や教師なし問題への応用もされている

SVMマージンの最大化という考えがベースになっている

マージンの最大化とは?

2つのクラスK1とK2を考える。2つのデータ間に境界線を引くことで2つのクラスを分類することができる

この境界線と境界線の最短距離にあるデータを最大化するように境界線を引くことである。

境界線と境界線に最も距離が近いデータまでの距離をマージンという。

また、この境界線と最も距離が近いデータ(マージン上にあるデータ)のことをサポートベクトルという

また、境界線は以下の式で表すことができる。


w^{T}x_{i} + b = 0

上の式にあてはめて0未満であれば-1、0以上であれば+1として各クラスに割り当てる(正負によってクラス分けてを行う)

f:id:Maruring:20210715202738p:plain

p次元データx = (x1,x2,・・・xp)Tと境界線までの距離は以下の式で表すことができる

f:id:Maruring:20210715203157p:plain

よって、クラスを分ける境界線からサポートベクトルまでの距離であるマージンは以下の式で表すことができる

f:id:Maruring:20210715203520p:plain

よってマージンの最大化は以下の式で表すことができる

f:id:Maruring:20210715203551p:plain

式変形を繰り返すと以下のような式となり、制約条件下でw,bを最小化する最適化問題となる

f:id:Maruring:20210715203951p:plain

上記の式のように線形分離可能を仮定したSV分類をハードマージンとよぶ

サポートベクトルを元に境界線を引くため、サポートベクトルより遠いデータが入力されても境界線には影響しない

しかし、全てのパターンにおいて線形分離が出来るわけではない

このようなデータに対してSVを適用できる世に制約条件を以下のようにしたものをソフトマージンという


t_{i}(w^{T}x_{i} + b)≧1-\xi{i}(i=0,1,,,n) 

ξはマージン内に入るデータや誤分類されたデータに対する誤差を許すスラック変数という


\xi\ = 1- t_{i}(w^{t}x+b)\gg0

ソフトマージンの最適化問題は以下のように表すことができる

f:id:Maruring:20210715205859p:plain

ペナルティであるCを大きくすると誤差を許さない。逆にいうと過学習を起こしてしまうリストがある

Cを小さくすると間違いを認めてるが、誤分類が多くなる

wとξは相反するパラメータであるため、両方のパラメータを調整しながら最小を図る

マージンの最適化問題

SVMのマージンの最大化は以下の最適化によって定式化される

f:id:Maruring:20210715210623p:plain

ハードマージン

f:id:Maruring:20210715210647p:plain

ソフトマージン

これらの最適化問題をSV問題の主問題という

しかし、主問題を直接解くのではなく相対問題というべつの形で表現して最適化を図る

相対問題にすることによるメリット

①変数を減らせることがある

カーネル関数が導入できて、効率的に非線形分類が可能

理由はわかったけど、どう解くのか??

不等式制約付き最適化問題

この相対問題を解くためにラグランジュの未定乗数法を利用する。

ラグランジュの未定乗数法

目的関数f(x)を最小化する点をn個の不等式制約gi(x)<0,1,,,iの元で求める

目的関数と不等式制約を1つにした関数ラグランジュ関数は以下の式で定義される

f:id:Maruring:20210715212508p:plain

ここでSVMの話にもどす

SVMの目的関数および不等式制約は以下の式である

f:id:Maruring:20210715212420p:plain

この条件をラグランジュ関数に果てはめて計算すると以下のようになる

f:id:Maruring:20210715212724p:plain

f:id:Maruring:20210715212825p:plain

上記の式を写像すると以下のようになる

f:id:Maruring:20210715213148p:plain

カーネルトリック

しかし、次元が大きいとΦ(x)TiΦ(x)jの計算は非常に難しい

そこでΦ(xi)TΦ(xj)の部分を以下のように置き換えることができる

 K(x_{i},x_{j}) = \phi(x_{i})^{T}\phi(x_{j})

このKをカーネル関数といい、2つのベクトル計算をすることなく内積を見積もることができる

以下、代表的なカーネル関数

f:id:Maruring:20210715213944p:plain

不等式制約付き最適化問題を手計算(appendix)

以下は手計算にて不等式制約付き最適化問題を解く過程である

f:id:Maruring:20210715214321p:plain

f:id:Maruring:20210715214329p:plain

f:id:Maruring:20210715214337p:plain