AI
2024/06/12
小山 佳祐

【機械学習】サポートベクターマシン解説~数理的解説①~

AI

今回は機械学習手法の一つであるサポートベクターマシンについて数理的な解説をしていきたいと思います。

前回の解説

はじめに

今回は前回扱った機械学習手法の一つであるサポートベクターマシンの数理的な解説をしてきたいと思います。前回はサポートベクターマシンの肝である「マージンの最大化」について直観的に理解できるように解説しました。


今回は直観的な表現を数理的な表現に落とし込んで数学的に取り扱える形にしていきます。


また、前回、線形のサポートベクターマシンのみについて扱ったので今回の解説も線形に絞りたいと思います。

データの表現

まずは、データ表現の整理から行っていきます。


\(\mathbf{x_i} :\) i番目のデータ点。一個一個のデータのこと


\(y_i :\) i番目のデータ点のクラスラベル。今回は二値分類を扱うので \(y_i \in (-1,1)\) となる。


超平面


$$ \mathbf{w} \cdot \mathbf{x} + b = 0 $$


\(\mathbf{w}\)は重みベクトル、bはバイアス項を表します。


ここで超平面とは二つのクラスを分けるうえでの境界平面のことです。重みベクトルとバイアス項が決定すると超平面がただ一つに決まるので学習の際には重みベクトルとバイアス項を求めます。


決定境界


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


このように表現することで新たなデータが入力されたときその関数の符号を見ることでクラスが決定されます。


マージンの定義


マージンとは超平面に最も近いデータ点のことでした。今サポートベクターが次のいずれかの条件を満たすとします。


$$ \mathbf{w} \cdot \mathbf{x} + {b} = 1 $$


$$ \mathbf{w} \cdot \mathbf{x} + b = -1 $$


これは各サポートベクターが決定境界の正の側にいるか、負の側にいるかを表しています。


この時、マージンはこれら二つの平面間の距離であるので


正の側のサポートベクターと超平面との距離


$$ d_+ = \frac{|\mathbf{w} \cdot \mathbf{x}_+ + b – 1|}{\|\mathbf{w}\|} = \frac{1}{\|\mathbf{w}\|} $$


負の側のサポートベクターと超平面との距離


$$ d_- = \frac{|\mathbf{w} \cdot \mathbf{x}_- + b + 1|}{\|\mathbf{w}\|} = \frac{1}{\|\mathbf{w}\|} $$


であるのでその和を取ることでマージンは


$$ ⁍ $$


と表現されます。


数理最適化へ


ここでマージンを最大化することを考えますが、マージンを最大化するには$\|\mathbf{w}\|$の最小化と同値になります。


またサポートベクターは


$$ \mathbf{w} \cdot \mathbf{x} + b = 1 $$


$$ \mathbf{w} \cdot \mathbf{x} + b = -1 $$


のいずれかを満たしているとし、最も超平面に近いデータがサポートベクターであるので各データについて


正の側にあるデータは


$$ \mathbf{w} \cdot \mathbf{x}_i + b \geq 1 $$


負の側にあるデータは


$$ \mathbf{w} \cdot \mathbf{x}_i + b \leq -1 $$


を満たす必要があり、これらをまとめると


$$ y_i (\mathbf{w} \cdot \mathbf{x}_i + b) \geq 1, \forall i $$


として表現することができます。


したがってこの制約条件の下でマージンを最大にすることは以下のように表されます。


なお目的関数は次回以降の計算上扱いやすいように二乗しています。


$$ \min_{\mathbf{w}, b} \frac{1}{2} \|\mathbf{w}\|^2 $$


$$ \text{subject to } y_i (\mathbf{w} \cdot \mathbf{x}_i + b) \geq 1, \forall i $$


このようにしてサポートベクターマシンを数式として表現することができました。


終わりに

今回はサポートベクターマシンの線形分類における数理的理解について解説しました。


サポートベクターマシンを数理的に表現することができましたが実際、どのように適切な超平面を求めればよいのでしょうか。次回のブログではどのような処理により最適化問題を解けばよいのかについて解説していきたいと思います。

New call-to-action