サポートベクターマシン(SVM)¶
キーワード:サポートベクター、マージン最大化、ハードマージン・ソフトマージン、カーネル法
要点
- 2クラスを分ける超平面のうち、最も近いデータ点までの距離(マージン)が最大のものを選ぶ。目的は \(\tfrac12\|\mathbf{w}\|^2\) の最小化で、凸な二次計画になる。
- 解はサポートベクター(マージン上かその内側の点)だけで決まる。ラグランジュ双対にすると、データは内積でしか現れない。
- 誤分類を許すのがソフトマージン(\(C\) で調整)。内積をカーネル関数に置き換えると、非線形な境界を同じ枠組みで扱える(カーネルトリック)。
ハードマージン¶
ラベルは \(t_n\in\{-1,+1\}\)。決定関数 \(f(\mathbf{x})=\mathbf{w}^{\top}\mathbf{x}+b\)、予測 \(\hat{y}=\mathrm{sign}\bigl(f(\mathbf{x})\bigr)\)。
- 点 \(\mathbf{x}_n\) から超平面までの距離は \(\dfrac{\lvert f(\mathbf{x}_n)\rvert}{\|\mathbf{w}\|}\)。\(\mathbf{w},b\) の定数倍は同じ超平面なので、最も近い点で \(t_nf(\mathbf{x}_n)=1\) となるよう尺度を決める。このとき、超平面から両側の最近点までが \(\dfrac{1}{\|\mathbf{w}\|}\)、マージン幅(両側あわせて)は \(\dfrac{2}{\|\mathbf{w}\|}\)。
- マージンの最大化 \(\max \dfrac{2}{\|\mathbf{w}\|}\) は、\(\tfrac12\|\mathbf{w}\|^2\) の最小化と同じ。
双対問題の導出
停留条件を \(\mathcal{L}\) に代入する。\(\mathbf{w}=\sum_n\alpha_nt_n\mathbf{x}_n\) より \(\tfrac12\|\mathbf{w}\|^2=\tfrac12\sum_{i,j}\alpha_i\alpha_jt_it_j\mathbf{x}_i^{\top}\mathbf{x}_j\)、\(\sum_n\alpha_nt_n\mathbf{w}^{\top}\mathbf{x}_n=\|\mathbf{w}\|^2\)、\(b\sum_n\alpha_nt_n=0\)。よって
主問題は凸で制約も線形なので、強双対性が成り立ち、双対問題の最大値と主問題の最小値が一致する。
- KKT 条件(相補性):\(\alpha_n\bigl[t_nf(\mathbf{x}_n)-1\bigr]=0\)。したがって
- \(\alpha_n=0\):マージンの外側の点(\(t_nf>1\))。解に寄与しない。
- \(\alpha_n>0\):ちょうどマージン上の点(\(t_nf=1\))=サポートベクター。
- \(\alpha_n\) の大半は 0(疎な解)。予測に使うのはサポートベクターだけ。
- \(b\) は、サポートベクター \(\mathbf{x}_s\) について \(t_sf(\mathbf{x}_s)=1\) から \(b=t_s-\sum_n\alpha_nt_n\mathbf{x}_n^{\top}\mathbf{x}_s\)(複数あれば平均)。
- 双対問題は \(\alpha\) についての二次計画。制約 \(\sum_n\alpha_nt_n=0\) があるため、SMO 法は 2 つの \(\alpha\) を同時に動かして、解析的に更新する。
ソフトマージン¶
線形分離できない、または外れ値がある場合に、制約違反をスラック変数 \(\xi_n\ge0\) で許す。
- ハードマージンとの違いは、双対問題の制約が \(\alpha_n\ge0\) から \(0\le\alpha_n\le C\)(\(\alpha_n+\mu_n=C,\ \mu_n\ge0\) から出る上限)に変わるだけ。
- \(\xi_n\) を消すと、ヒンジ損失を使った形になる:
| \(\alpha_n\) | 点の位置 | \(\xi_n\) |
|---|---|---|
| \(0\) | マージンの外側(\(t_nf\ge1\)) | \(0\) |
| \(0<\alpha_n<C\) | マージン上(\(t_nf=1\)) | \(0\) |
| \(C\) | マージンの内側、または誤分類(\(t_nf\le1\)) | \(1-t_nf\ge0\)(\(\xi_n>1\) なら誤分類) |
- \(C\) の意味:誤分類・マージン侵入への罰則の重み。\(C\) が大きいほど違反を許さず(ハードマージンに近づく、マージンが狭く過剰適合しやすい)、\(C\) が小さいほど違反を許してマージンを広くとる(過少適合しやすい)。\(C\to\infty\) でハードマージン。
- 損失の比較(\(s=t\,f(\mathbf{x})\) の関数):
| 損失 | 式 | 性質 |
|---|---|---|
| 0-1 損失 | \(\mathbb{1}[s<0]\) | 非凸・不連続で最適化しにくい |
| ヒンジ損失(SVM) | \(\max(0,\,1-s)\) | \(s\ge1\) で厳密に 0。→ サポートベクター以外が解に効かない |
| ロジスティック損失 | \(\log(1+e^{-s})\) | どこでも正。全点が勾配に寄与し、確率が出せる(ロジスティック回帰) |
カーネル法¶
特徴写像 \(\boldsymbol{\phi}(\mathbf{x})\) で高次元に写してから線形に分ければ、元の空間では非線形な境界になる。双対問題と予測式には内積しか現れないので、\(\boldsymbol{\phi}\) を計算せずに、カーネル関数 \(K(\mathbf{x},\mathbf{x}')=\boldsymbol{\phi}(\mathbf{x})^{\top}\boldsymbol{\phi}(\mathbf{x}')\) だけを計算すればよい(カーネルトリック)。
| カーネル | 式 | 特徴 |
|---|---|---|
| 線形 | \(\mathbf{x}^{\top}\mathbf{x}'\) | 元の空間のまま。特徴量が多いときに有力 |
| 多項式 | \((c+\mathbf{x}^{\top}\mathbf{x}')^{q}\)(\(c\ge0,\ q\in\mathbb{N}\)) | \(q\) 次までの特徴量の積を暗黙に使う |
| RBF(ガウス) | \(\exp\Bigl(-\dfrac{\lVert\mathbf{x}-\mathbf{x}'\rVert^2}{2\sigma^2}\Bigr)=\exp\bigl(-\gamma\lVert\mathbf{x}-\mathbf{x}'\rVert^2\bigr)\) | 無限次元の特徴空間。最もよく使う。\(\gamma=\dfrac{1}{2\sigma^2}\) |
| シグモイド | \(\tanh(a\,\mathbf{x}^{\top}\mathbf{x}'+c)\) | 半正定値にならない場合がある(ニューラルネット風) |
- 例(2次元、\(q=2\)、\(c=0\)):\((\mathbf{x}^{\top}\mathbf{x}')^2=(x_1x_1'+x_2x_2')^2=\boldsymbol{\phi}(\mathbf{x})^{\top}\boldsymbol{\phi}(\mathbf{x}')\)、\(\boldsymbol{\phi}(\mathbf{x})=(x_1^2,\ \sqrt2x_1x_2,\ x_2^2)\)。3次元の内積を、2次元の内積の2乗で計算できる。
- カーネルの条件(マーサーの条件):任意の点集合でグラム行列 \([K(\mathbf{x}_i,\mathbf{x}_j)]\) が対称・半正定値。
- RBF の \(\gamma\):大きいと 1 点の影響範囲が狭く、境界が入り組む(過剰適合)。小さいと影響が広く、線形に近づく(過少適合)。\(C\) と \(\gamma\) はグリッドサーチ+交差検証で選ぶ。特徴量は標準化する。
- 計算量:学習は \(O(N^2)\sim O(N^3)\)、予測はサポートベクターの数に比例。大規模データには不向き(線形 SVM なら確率的勾配降下法などで高速に解ける)。
- 多クラスは 1対他/1対1 の組み合わせ。回帰への拡張は SVR(\(\varepsilon\) 以内の誤差を無視する \(\varepsilon\)-不感応損失)。確率が必要なときは出力にシグモイドを当てはめる(Platt scaling)。
動かしてみる
- 「線形・分離可能」で \(\log_{10}C\) を 0 以上にすると、サポートベクターは 3 点(実線の輪)になり、マージン幅は約 2.14 で変わりません(ハードマージンと同じ)。下げていくと破線の輪(\(\alpha=C\))が増え、マージンが広がります(\(\log_{10}C=-2\) で約 7.2)。
- 「線形・外れ値あり」に切り替えると、外れ値の点は常に誤分類になります。\(C\) が小さいうちは外れ値を無視してマージンを広くとり、\(C\) を上げるとマージンが狭まります。
- 下の行の主問題と双対問題の値が一致します(強双対性)。\(\sum_n\alpha_nt_n\) は常にほぼ 0 です。
- 「円状・線形カーネル」では直線で分けられず、\(\mathbf{w}\approx\mathbf{0}\) になって全部を外側クラスと予測します。「円状・RBFカーネル」に切り替えると、\(\gamma=0.5\)、\(\log_{10}C\ge0\) で内側を囲む境界が得られます。\(\gamma\) を 2 に上げると全点がサポートベクターになり、境界が点ごとに丸く囲む形になります。
試験の着眼点¶
- 目的は \(\tfrac12\|\mathbf{w}\|^2\) の最小化(=マージン \(2/\|\mathbf{w}\|\) の最大化)。制約は \(t_n(\mathbf{w}^{\top}\mathbf{x}_n+b)\ge1\)。
- サポートベクター=\(\alpha_n>0\) の点。それ以外のデータを消しても解は変わらない。
- 双対問題:ハード=\(\alpha_n\ge0\)、ソフト=\(0\le\alpha_n\le C\)。どちらも \(\sum_n\alpha_nt_n=0\)。\(\mathbf{w}=\sum_n\alpha_nt_n\mathbf{x}_n\)。
- \(C\) 大=ハードに近い(過剰適合の傾向)、\(C\) 小=広いマージン(過少適合の傾向)。
- カーネルトリック:内積 \(\mathbf{x}_i^{\top}\mathbf{x}_j\) を \(K(\mathbf{x}_i,\mathbf{x}_j)\) に置き換える。特徴写像を明示的に計算しない。RBF は無限次元。
- ヒンジ損失 \(\max(0,1-t f)\) は、マージンの外側の点で 0。ロジスティック損失との違いを説明できること。
- KKT 条件・ラグランジュ双対の一般論は 最適化理論。
参考¶
- Support-vector networks(Cortes, Vapnik, 1995)
- scikit-learn User Guide: Support Vector Machines(数式、カーネル、\(C\)・\(\gamma\) の説明)
- The Elements of Statistical Learning(Hastie, Tibshirani, Friedman):第12章 Support Vector Machines and Flexible Discriminants