統計・データ分析機械学習

SVMのマージン最大化とカーネルトリックを数式で理解する

SVM(サポートベクターマシン)は「マージン最大化」という基準で境界線を決める分類手法ですが、「なぜその数式で解けるのか」を理解しないまま使っている人は多いのではないでしょうか。

この記事でわかること

  • SVMがマージンを最大化する仕組みと、数式の導出プロセス
  • サポートベクトルが実際にはどこに乗っている点なのか
  • カーネルトリックが特徴空間で何をしているのか
  • ハードマージンSVMとソフトマージンSVM、スラック変数の役割の違い
  • 線形判別分析(LDA)との違いと、境界の安定性の差

SVMは何を求めている手法なのか

SVMは、2つのクラスのデータを分ける境界線(超平面)f(x)=wx+b=0f(x) = w^{\top}x + b = 0 を引く手法です。境界線を引くだけなら他の手法でもできますが、SVMの特徴は「境界線とデータ点との間の余白(マージン)を最大にする」という基準で w,bw, b を決める点にあります。

余白が広いほど、未知のデータが多少ズレて出現しても正しく分類できる可能性が高くなります。この直感を数式に落とし込んだのが、マージン最大化問題です。


マージン最大化の導出

Step1:点と超平面の距離

まず「点と直線の距離の公式」をおさらいします。2次元の直線 ax+by+c=0ax + by + c = 0 と点 (x0,y0)(x_0, y_0) の距離は、

d=ax0+by0+ca2+b2d = \dfrac{|a x_0 + b y_0 + c|}{\sqrt{a^2 + b^2}}

で求まります。これを多次元に拡張すると、超平面 wx+b=0w^{\top}x + b = 0 と点 xix_i の距離は、

d=wxi+bwd = \dfrac{|w^{\top}x_i + b|}{\|w\|}

となります。分母の w\|w\| は法線ベクトル ww の大きさ(a2+b2\sqrt{a^2+b^2} に対応する部分)です。

なぜこの形になるのか。超平面上の任意の点を x0x_0 とすると、xix_i から超平面までの距離は、xix0x_i - x_0 を法線ベクトル w/ww/\|w\| 方向に射影した長さに等しくなります。超平面上の点なので wx0=bw^{\top}x_0 = -b が成り立つことを使って整理すると、先ほどの距離の式と一致します。次元が増えても「法線ベクトル方向への射影」という考え方は変わらないため、同じ形の式が成り立ちます。

Step2:マージンの正規化

各クラスのラベルを yi{+1,1}y_i \in \{+1, -1\} とすると、正しく分類できていれば yi(wxi+b)>0y_i(w^{\top}x_i + b) > 0 が成り立ちます。この符号付きの量を使うと、境界線から点 xix_i までの距離は、

di=yi(wxi+b)wd_i = \dfrac{y_i(w^{\top}x_i + b)}{\|w\|}

と書けます。ここで、w,bw, b を同じ定数倍しても超平面自体は変わらない(スケール不変性)という性質を利用して、境界に最も近い点で yi(wxi+b)=1y_i(w^{\top}x_i + b) = 1 となるように正規化します。すると、その点までの距離(マージン)は、

margin=1w\text{margin} = \dfrac{1}{\|w\|}

というシンプルな形になります。

Step3:最適化問題への変形

マージン 1w\dfrac{1}{\|w\|} を最大化することは、w\|w\| を最小化することと同値です。計算しやすいよう2乗した 12w2\dfrac{1}{2}\|w\|^2 を最小化する形にすると、SVMの最適化問題は次のように書けます。

minw,b12w2s.t.yi(wxi+b)1 (i)\min_{w,b} \dfrac{1}{2}\|w\|^2 \quad \text{s.t.} \quad y_i(w^{\top}x_i+b) \geq 1 \ (\forall i)

これは凸2次計画問題であり、ラグランジュの未定乗数法を使って解くことができます。


サポートベクトルとは何か

「サポートベクトル」と聞くと、決定境界線の上に乗っている点だとイメージしがちですが、これは誤りです。正しくは、2本のマージン境界線(wx+b=+1w^{\top}x+b=+1wx+b=1w^{\top}x+b=-1)の上に乗っている点がサポートベクトルです。

+1側マージン境界: w^Tx+b = +1   ● ← サポートベクトル
--------------------------------
決定境界線:        w^Tx+b = 0
--------------------------------
-1側マージン境界: w^Tx+b = -1   ● ← サポートベクトル

決定境界線そのものの上にデータ点が乗ることは(正しく分類されている限り)ありません。あくまで境界線から最も近い、マージンの「へり」に接している点がサポートベクトルです。

SVMの決定境界は、このサポートベクトルだけで決まります。マージンから離れた場所にあるデータ点をいくら追加・削除しても、サポートベクトルが変わらなければ境界線は動きません。これが、後述するLDAとの大きな違いになります。


カーネルトリックとは何か

データが直線(超平面)では分けられない形に分布している場合、SVMはカーネル関数を使って高次元の特徴空間に写像し、その空間で線形に分離します。

代表的なものが多項式カーネルです。

k(x,x)=(1+xx)pk(x, x') = (1 + x^{\top}x')^{p}

このカーネルは、元のデータ xx を「0次からp次までの単項式」からなる特徴空間に写像したときの内積に相当します。たとえば、データがある座標軸に沿って複数の帯(+1, -1, +1, -1, +1のように交互)に分かれている場合、境界線にその軸の4乗の項が必要になることがあります。この場合、p=4p=4 以上の多項式カーネルでなければ、その境界を表現できません。

カーネルトリックの利点は、実際に高次元の特徴ベクトルを計算しなくても、内積 k(x,x)k(x,x') だけを計算すれば最適化問題が解けることです。


ハードマージンSVM vs ソフトマージンSVM

ここまで説明した基本形は「ハードマージンSVM」と呼ばれ、すべてのデータ点が誤りなく分離できることを前提としています。しかし、現実のデータには外れ値や重なりがあり、完全に分離できないケースが多くあります。

そこで導入されるのが「ソフトマージンSVM」です。制約条件にスラック変数 ξi0\xi_i \geq 0 を加え、多少の誤分類を許容します。

yi(wxi+b)1ξi,ξi0y_i(w^{\top}x_i+b) \geq 1 - \xi_i, \quad \xi_i \geq 0

目的関数にはペナルティ項 CiξiC\sum_i \xi_i が加わり、正則化パラメータ CC でマージンの広さと誤分類の許容度のバランスを調整します。

minw,b,ξ12w2+Ciξi\min_{w,b,\xi} \dfrac{1}{2}\|w\|^2 + C\sum_i \xi_i

スラック変数 ξi\xi_i の値によって、その点の状態は3段階に分かれます。

ξi\xi_iの値意味
ξi=0\xi_i = 0マージンの外側にあり、正しく分類されている(ハードマージンと同じ状態)
0<ξi10 < \xi_i \leq 1マージンの内側に入り込んでいるが、境界を越えてはいない(正しいクラス側)
ξi>1\xi_i > 1決定境界を越えてしまい、誤分類されている

解き方はハードマージンと同じか。両者とも凸2次計画問題であり、ラグランジュの未定乗数法から双対問題を導いて解くという大枠の手順は共通しています。違いは、双対問題のラグランジュ乗数 αi\alpha_i の範囲だけです。

αi\alpha_iの範囲
ハードマージンαi0\alpha_i \geq 0
ソフトマージン0αiC0 \leq \alpha_i \leq C(上限Cが追加される)

ソフトマージンの目的関数に CiξiC\sum_i \xi_i というペナルティ項が加わったことで、ξi\xi_i に関する微分条件から αiC\alpha_i \leq C という上限(ボックス制約)が追加で導かれます。


線形判別分析(LDA)との違い

線形判別分析(LDA)もSVMと同じく線形の境界を作る手法ですが、導出の出発点がまったく異なります。LDAは、各クラスのデータが正規分布に従い、かつ共分散行列が両クラスで等しいと仮定し、尤度比から境界を導きます。

あるデータ xx がクラス1・クラス2のどちらに属するかは、尤度比の対数、logp1(x)p2(x)\log\dfrac{p_1(x)}{p_2(x)} の符号で決まります。正規分布の密度関数を代入し、共分散行列が共通であるという仮定を使うと、2次の項(xΣ1xx^{\top}\Sigma^{-1}x 型の項)が両クラスで打ち消し合い、残るのは xx について1次の式だけになります。これが、LDAの判別関数が「線形」になる理由です。

SVMとLDAの決定的な違いは、境界がどのデータに依存するかです。

  • SVM:境界はサポートベクトル(マージン付近の少数の点)だけで決まる
  • LDA:境界は全データの平均・共分散行列で決まる

そのため、マージンから離れた場所のデータを削除しても、SVMの境界はサポートベクトルが変わらない限り動きませんが、LDAの境界は全データの統計量が変わるため動いてしまいます。


分布の「カーネル」とSVMの「カーネル」の違い

余談として、統計学には「カーネル」という言葉がもう一つ出てきます。確率密度関数のうち、変数 xx に依存する部分だけを取り出したものを「分布のカーネル」と呼びます。たとえば正規分布の密度関数において、xx に依存しない係数(12πσ\dfrac{1}{\sqrt{2\pi}\sigma})は正規化定数であり、カーネルには含まれません。カーネルは指数部分(exp((xμ)22σ2)\exp\left(-\dfrac{(x-\mu)^2}{2\sigma^2}\right))だけです。

これはSVMのカーネル関数(2点間の類似度・内積を表す関数)とは全く別の概念であり、名前が同じだけの異なる用語なので注意が必要です。


よくある質問

Q. サポートベクトルは何個くらいになりますか?

A. データ全体の数に対して、一般的には少数(マージン付近の点だけ)になります。境界から離れた大多数のデータ点はサポートベクトルにならず、モデルの決定に影響しません。

Q. ソフトマージンのCはどう決めればいいですか?

A. Cが大きいほど誤分類への許容度が下がり(マージンが狭くなる)、小さいほど誤分類を許容してマージンを広げます。一般的には交差検証でデータに応じて最適な値を探索します。

Q. カーネル法はSVM以外でも使われますか?

A. はい。カーネル法自体は「内積を別の関数に置き換えて非線形な関係を扱う」という一般的な考え方で、カーネル回帰やガウス過程など他の手法にも応用されています。


まとめ

  1. SVMは、境界線とデータ点との距離(マージン)を最大化するように w,bw, b を求める手法で、12w2\dfrac{1}{2}\|w\|^2 の最小化問題に帰着する
  2. サポートベクトルは決定境界線ではなく、2本のマージン境界線上に乗っている点
  3. カーネルトリックは、高次元特徴空間での内積を直接計算することで非線形な分離を可能にする
  4. ハードマージンとソフトマージンは解き方の大枠が同じで、違いはラグランジュ乗数 αi\alpha_i に上限Cが付くかどうか
  5. LDAは全データの平均・共分散に依存するのに対し、SVMはサポートベクトルのみに依存するため、境界の安定性が異なる
  6. 「分布のカーネル」と「SVMのカーネル」は名前が同じだけで別概念