サポートベクターマシン

サポートベクターマシンの概要

サポートベクターマシンの理論

データを \(\{\boldsymbol{x}_i\in\mathbb{R}^d\}_{i=1}^N\) とします。 このデータを2つのクラス \(K_1,K_2\) に分類することを考えます。

分類方法は、超平面 \(\boldsymbol{w}^\top\boldsymbol{x}+b=0\) を境に分けて

\[ \boldsymbol{x}_i\in K_1 \Longleftrightarrow \boldsymbol{w}^\top\boldsymbol{x}_i+b \gt 0 \] \[ \boldsymbol{x}_i\in K_2 \Longleftrightarrow \boldsymbol{w}^\top\boldsymbol{x}_i+b \lt 0 \]

とします。 また、ラベル変数を次のように定めます。

\[ y_i= \begin{cases} 1 & (\boldsymbol{x}_i\in K_1) \\ -1 & (\boldsymbol{x}_i\in K_2) \end{cases} \]

各データ点 \(\boldsymbol{x}_i\) と超平面 \(\boldsymbol{w}^\top\boldsymbol{x}+b=0\) の符号付き距離は

\[ \frac{\boldsymbol{w}^\top\boldsymbol{x}_i+b}{\|\boldsymbol{w}\|} \]

と表せます。 これにラベル変数 \(y_i\) を掛けたもの

\[ \frac{y_i(\boldsymbol{w}^\top\boldsymbol{x}_i+b)}{\|\boldsymbol{w}\|} \]

は、正しく分類された \(\boldsymbol{x}_i\) に対しては正の距離、誤って分類された \(\boldsymbol{x}_i\) に対しては負の距離を表します。 ハードマージンSVMでは、すべてのデータ点 \(\boldsymbol{x}_i\) は線形分離可能であるという仮定で考えるので、常に

\[ \frac{y_i(\boldsymbol{w}^\top\boldsymbol{x}_i+b)}{\|\boldsymbol{w}\|} \gt 0 \]

が成り立ちます。 よって、このうち最小となるもの

\[ \min_{i} \frac{y_i(\boldsymbol{w}^\top\boldsymbol{x}_i+b)}{\|\boldsymbol{w}\|} \quad (i=1,2,\cdots,N) \]

をパラメータ \(\boldsymbol{w},b\) のもとで最大化すればよく、考える問題は次のようになります。

最適化問題(マージン最大化)
\[ \max_{\boldsymbol{w},b} \left\{ \min_{i} \frac{y_i(\boldsymbol{w}^\top\boldsymbol{x}_i+b)}{\|\boldsymbol{w}\|} \right\} \quad (i=1,2,\cdots,N) \]

この問題を変形して簡単にします。

\[ \begin{align} &\max_{\boldsymbol{w},b} \left\{ \min_{i} \frac{y_i(\boldsymbol{w}^\top\boldsymbol{x}_i+b)}{\|\boldsymbol{w}\|} \right\} \\ \\ &\Longleftrightarrow \max_{\boldsymbol{w},b} \left[ \frac{1}{\|\boldsymbol{w}\|} \left\{ \min_{i} y_i(\boldsymbol{w}^\top\boldsymbol{x}_i+b) \right\} \right] \\ \\ &\Longleftrightarrow \max_{\boldsymbol{w},b,m} \frac{m}{\|\boldsymbol{w}\|} \quad \text{s.t.} \quad y_i(\boldsymbol{w}^\top\boldsymbol{x}_i+b) \ge m \\ \\ &\Longleftrightarrow \max_{\boldsymbol{w},b,m} \frac{m}{\|\boldsymbol{w}\|} \quad \text{s.t.} \quad y_i\left(\frac{\boldsymbol{w}^\top}{m}\boldsymbol{x}_i+\frac{b}{m}\right) \ge 1 \\ \\ &\Longleftrightarrow \begin{cases} \displaystyle \max_{\boldsymbol{w},b,m} \frac{m}{\|\boldsymbol{w}\|} \quad \text{s.t.} \quad y_i\left(\frac{\boldsymbol{w}^\top}{m}\boldsymbol{x}_i+\frac{b}{m}\right) \ge 1 \\ \displaystyle \tilde{\boldsymbol{w}}=\frac{\boldsymbol{w}}{m},~\tilde{b}=\frac{b}{m} \end{cases} \\ \\ &\Longleftrightarrow \max_{\tilde{\boldsymbol{w}},\tilde{b},m} \frac{m}{\|m\tilde{\boldsymbol{w}}\|} \quad \text{s.t.} \quad y_i(\tilde{\boldsymbol{w}}^\top\boldsymbol{x}_i+\tilde{b}) \ge 1 \\ \\ &\Longleftrightarrow \max_{\tilde{\boldsymbol{w}},\tilde{b}} \frac{1}{\|\tilde{\boldsymbol{w}}\|} \quad \text{s.t.} \quad y_i(\tilde{\boldsymbol{w}}^\top\boldsymbol{x}_i+\tilde{b}) \ge 1 \\ \\ &\Longleftrightarrow \min_{\tilde{\boldsymbol{w}},\tilde{b}} \|\tilde{\boldsymbol{w}}\| \quad \text{s.t.} \quad y_i(\tilde{\boldsymbol{w}}^\top\boldsymbol{x}_i+\tilde{b}) \ge 1 \end{align} \]

計算しやすくするために少し書き換えると、次のようになります。

最適化問題(マージン最大化)
\[ \begin{align} &\min_{\boldsymbol{w},b}\frac{1}{2}\|\boldsymbol{w}\|^2\\ &\text{s.t.}\quad y_i(\boldsymbol{w}^\top\boldsymbol{x}_i+b)\ge1 \quad (i=1,\cdots,N) \end{align} \]

この問題を解くために、ラグランジュの未定乗数法を適用します。 ラグランジュ関数は次のようになります。

\[ \mathcal{L}(\boldsymbol{w},b,\boldsymbol{\alpha}) =\frac{1}{2}\|\boldsymbol{w}\|^2+\sum_{i=1}^N\alpha_i\{1-y_i(\boldsymbol{w}^\top\boldsymbol{x}_i+b)\} \]

このとき、最適解の必要十分条件は次のようになります。

\[ \frac{\partial\mathcal{L}}{\partial\boldsymbol{w}}=\boldsymbol{0} ,~ \frac{\partial\mathcal{L}}{\partial b}=0 ,~ \frac{\partial\mathcal{L}}{\partial \alpha_i} \le 0 ,~ \alpha_i \ge 0 ~~ (i=1,\cdots,N) \]
\[ \begin{align} \frac{\partial\mathcal{L}}{\partial\boldsymbol{w}}=\boldsymbol{0} &\Longleftrightarrow \boldsymbol{w}-\sum_{i=1}^N\alpha_iy_i\boldsymbol{x}_i=\boldsymbol{0} \\ &\Longleftrightarrow \boldsymbol{w}=\sum_{i=1}^N\alpha_iy_i\boldsymbol{x}_i \end{align} \]
\[ \begin{align} \frac{\partial\mathcal{L}}{\partial b}=0 &\Longleftrightarrow -\sum_{i=1}^N\alpha_iy_i=0 \\ &\Longleftrightarrow \sum_{i=1}^N\alpha_iy_i=0 \end{align} \]
\[ \begin{align} \frac{\partial\mathcal{L}}{\partial \alpha_i} \le 0 &\Longleftrightarrow 1-y_i(\boldsymbol{w}^\top\boldsymbol{x}_i+b) \le 0 \\ &\Longleftrightarrow y_i(\boldsymbol{w}^\top\boldsymbol{x}_i+b) \ge 1 \end{align} \]

よって、\(\displaystyle\boldsymbol{w}=\sum_{i=1}^N\alpha_iy_i\boldsymbol{x}_i,~\sum_{i=1}^N\alpha_iy_i=0\) を \(\mathcal{L}\) に代入すると

\[ \begin{align} \mathcal{L} &=\frac{1}{2}\left(\sum_{i=1}^N\alpha_iy_i\boldsymbol{x}_i\right)^\top\left(\sum_{j=1}^N\alpha_jy_j\boldsymbol{x}_j\right) + \sum_{i=1}^N\alpha_i\left[1-y_i\left\{\left(\sum_{j=1}^N\alpha_jy_j\boldsymbol{x}_j\right)^\top\boldsymbol{x}_i+b\right\}\right] \\ &=\frac{1}{2}\left(\sum_{i=1}^N\alpha_iy_i\boldsymbol{x}_i^\top\right)\left(\sum_{j=1}^N\alpha_jy_j\boldsymbol{x}_j\right) + \sum_{i=1}^N\alpha_i\left[1-y_i\left\{\left(\sum_{j=1}^N\alpha_jy_j\boldsymbol{x}_j^\top\right)\boldsymbol{x}_i+b\right\}\right] \\ &=\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j\boldsymbol{x}_i^\top\boldsymbol{x}_j + \sum_{i=1}^N\alpha_i\left(1-\sum_{j=1}^N\alpha_jy_jy_i\boldsymbol{x}_j^\top\boldsymbol{x}_i+by_i\right) \\ &=\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j\boldsymbol{x}_i^\top\boldsymbol{x}_j + \sum_{i=1}^N\alpha_i-\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_jy_i\boldsymbol{x}_j^\top\boldsymbol{x}_i+b\sum_{i=1}^N\alpha_iy_i \\ &=-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j\boldsymbol{x}_i^\top\boldsymbol{x}_j + \sum_{i=1}^N\alpha_i \end{align} \]
最適化問題(ハードマージンSVM:双対問題)
\[ \begin{align} &\max_{\boldsymbol{\alpha}}\left(-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j\boldsymbol{x}_i^\top\boldsymbol{x}_j + \sum_{i=1}^N\alpha_i\right)\\ &\text{s.t.}\quad \alpha_i\ge0,~\sum_{i=1}^N\alpha_iy_i=0 \quad (i=1,\cdots,N) \end{align} \]