サポートベクターマシン - マージンを最大化する分類の王者

「どうすれば、2つのグループを最も"余裕を持って"分けられるか?」 この問いへの答えがSVMだ。マージン最大化・ソフトマージン・カーネルトリック・ヒンジロス・ 柔軟判別分析・混合判別分析まで、非線形分類の全体像を視覚的に理解しよう。

なぜ「余裕」が大事なのか - マージン最大化の直感

線形分類器には、無数の"正しい"直線が存在する。 どれも訓練データを正しく分類できる。では、どれが「最良」か?

図を想像してほしい。赤い点と青い点が散らばっている。 直線Aは両グループを分けるが、かなり赤い点の近くを通っている。 直線Bは両グループのちょうど真ん中を通る。 新しい赤い点が来たとき、どちらの直線が間違いにくいだろうか?

当然Bだ。余裕(マージン)が大きい境界ほど、未知のデータに対して安全なのだ。 SVMはこの直感を数学にする:「最も大きなマージンを持つ超平面を見つけよ」

複数の候補直線から最大マージンの境界が選ばれ、サポートベクターがハイライトされるアニメーション
灰色の候補直線から、最も余裕のある白い境界線が選ばれる。オレンジの点線がマージン境界、赤い円がサポートベクター。

超平面とは何か

$p$ 次元空間では、分類境界は$x^T \beta + \beta_0 = 0$ という超平面だ。 2次元なら直線、3次元なら平面、それ以上なら超平面になる。

あるデータ点 $x$ から超平面までの距離は$|x^T \beta + \beta_0| / \|\beta\|$ で表される。

マージンとは、最も近い訓練点から超平面までの距離のこと。 これを最大化する超平面を「最大マージン分類器」と呼ぶ。

クラスラベルを $y_i \in \{-1, +1\}$ とすると、 すべての点が正しく分類される条件は:

$$y_i(x_i^T \beta + \beta_0) \geq M \quad \forall i$$

マージン $M$ を最大化する問題は、等価的に次のように書ける:

$$\min_{\beta, \beta_0} \|\beta\| \quad \text{s.t.} \quad y_i(x_i^T \beta + \beta_0) \geq 1 \quad \forall i$$

各記号の意味:

解の特徴:サポートベクター

最大マージン超平面は、実は少数の特別な点にしか依存しない。 マージン境界上に位置する点(ちょうど $y_i(x_i^T \beta + \beta_0) = 1$ を満たす点)をサポートベクターと呼ぶ。

これらのサポートベクターだけで超平面が決まり、他の点はどれだけ動かしても境界は変わらない。 これがSVMの「スパース性」であり、大きな強みだ。 大量のデータのうち、ほんの数点だけが決定に関与する、という驚くべき性質だ。

現実のデータは綺麗に分かれない - ソフトマージンとスラック変数

理想的なハードマージンSVMは、データが完全に分離できることを前提としている。 しかし現実のデータは必ず重複する。

もし1つの外れ値が存在したら、完全分離を諦めるべきか? それとも、多少の誤分類を許してでも大きなマージンを保つべきか?

SVMの答えは明快だ:「多少の"侵犯"を許しながら、全体的に最もマージンを広くとる」

スラック変数の3つの状態(ξ=0、0<ξ≤1、ξ>1)を色別に視覚化するアニメーション
緑の円(完璧な点)、橙の円(マージン内侵犯)、赤の円(誤分類)で3つの状態を示す。矢印の長さがξの大きさを表す。

スラック変数の直感的な意味

スラック変数 $\xi_i$ を導入する:

$$y_i(x_i^T \beta + \beta_0) \geq 1 - \xi_i, \quad \xi_i \geq 0$$

$\xi_i$ の意味を直感的に理解しよう:

コストパラメータ C

ソフトマージンの最適化問題は:

$$\min_{\beta, \beta_0} \|\beta\|^2 + C \sum_{i=1}^N \xi_i \quad \text{s.t.} \quad y_i(x_i^T \beta + \beta_0) \geq 1 - \xi_i, \quad \xi_i \geq 0$$

コストパラメータ $C$ がトレードオフを制御する:

外れ値1つのために、ほとんど全てのデータを正しく分類できる広いマージンを諦めるのは得策ではない。$C$ を調整することで、「データの雑音への許容度」と「汎化性能」のバランスを取れる。

解のスパース性はここでも成立する

重要な事実:解はやはりサポートベクターのみに依存する。 ラグランジュ双対問題を解くと:

$$\hat{\beta} = \sum_i \alpha_i y_i x_i$$

この式は驚くべきことを示している:最適な境界は、少数のサポートベクターの重み付き和で完全に表現できる。 残りの点は「沈黙」している。$\alpha_i > 0$ となる観測だけが解に寄与する。

カーネルトリック - 高次元への旅

ここまで学んできたSVMは、線形境界しか引けない。 しかし現実のデータが非線形な構造を持っていたら?

円の内側が青、外側が黄色のデータがある。 どんな直線を引いても分けられない。では、この問題を解けない?

実は、解けるのだ。次元を増やすというトリックを使って。

2D空間では分離不可能なデータが、3D変換後に超平面で完全分離できることを示すアニメーション
左パネル:2D空間では直線で分離不可能。右パネル:z = x₁² + x₂² 変換後の3D空間では超平面(白線)が完全分離する。

特徴空間への写像

元の特徴 $x = (x_1, x_2)$ を、新しい特徴 $h(x)$ に変換する:

$$h(x) = (x_1, x_2, x_1^2, x_2^2, x_1 x_2)$$

3次元目以降を追加することで、元の空間では非線形だった境界が、高次元空間では線形になることがある。 しかし問題がある:高次元変換は計算コストが爆発的に増える。$p$ 次元の入力を $d$ 次多項式で変換すると、$\binom{p+d}{d}$ 次元にもなる。

カーネルトリックの美しさ

ここでSVMの美しいトリックが登場する。 SVMの最適化問題をラグランジュ双対化すると、解は内積 $\langle x_i, x_j \rangle$ の形でしか出てこない。

$$L_D = \sum_i \alpha_i - \frac{1}{2} \sum_{i,l} \alpha_i \alpha_l y_i y_l \langle h(x_i), h(x_l) \rangle$$

つまり、$h(x)$ を明示的に計算しなくても、 内積 $\langle h(x_i), h(x_l) \rangle$ だけ計算できれば十分なのだ!

カーネル関数をこの内積として定義する:

$$K(x, x') = \langle h(x), h(x') \rangle$$

よく使われるカーネル

カーネル名意味
多項式カーネル$(1 + \langle x, x' \rangle)^d$d次多項式特徴
RBFカーネル$\exp(-\gamma \|x - x'\|^2)$ガウス的な局所性
シグモイドカーネル$\tanh(\kappa_1 \langle x, x' \rangle + \kappa_2)$ニューラルネット風

RBFカーネルのイメージ: 2点 $x, x'$ が近いほど$K(x, x') \approx 1$、遠いほど $K(x, x') \approx 0$。 無限次元の特徴空間を「暗黙的に」使っているようなものだ。

$$K(x, x') = \exp\left(-\gamma \|x - x'\|^2\right)$$

決定関数はカーネルを使ってシンプルに書ける:

$$f(x) = \sum_{i} \alpha_i y_i K(x_i, x) + \beta_0$$

新しいデータ点は、訓練データとの類似度(カーネル値)の重み付き和で分類される。 計算コストの爆発なしに、複雑な変換を実現できるのがカーネルトリックの真髄だ。

SVMは正則化手法だった - ヒンジロスの視点

ここで視点を変えよう。SVMを「損失関数 + 正則化」の枠組みで捉えると、 他の手法との関係が鮮明になる。

ヒンジロス(Hinge Loss)

SVMの損失関数を「ヒンジロス」と呼ぶ:

$$L(y, f(x)) = [1 - y f(x)]_+ = \max(0, 1 - y f(x))$$

$[z]_+ = \max(0, z)$ は正の部分のみを取り出す関数だ。 グラフを見ると、$yf > 1$(正しく分類かつマージン外)のとき損失がゼロになる「折れ曲がり」が特徴的だ。

ヒンジロス(青の折れ線)とロジスティック損失(黄の曲線)を比較し、ゼロ損失領域を薄青でシェードしたアニメーション
青い折れ線がヒンジロス。yf≥1(マージン以上)の右側でゼロになる。黄の曲線はロジスティック損失(常に正)。薄青の領域がサポートベクター不要ゾーン。

統一的な枠組み

ヒンジロスを使うと、SVMの問題は次の形に書ける:

$$\min_f \sum_i [1 - y_i f(x_i)]_+ + \lambda \|f\|^2_\mathcal{H}$$

この形は他の分類手法と全く同じ枠組みだ!

手法損失関数正則化
SVMヒンジロス $[1-yf]_+$$\lambda\|f\|^2$
ロジスティック回帰対数損失 $\log(1+e^{-yf})$$\lambda\|f\|^2$
Ridge回帰二乗誤差 $(y-f)^2$$\lambda\|f\|^2$

ヒンジロスの特性が生む"スパース性"

ヒンジロスは $yf > 1$(正しく分類、かつマージン外)のとき、 ロスがゼロになる。この「無罰」な領域の存在が、解のスパース性(少数のサポートベクターのみが寄与)をもたらす。

一方、ロジスティック回帰の対数損失は、いくら正しく分類されていても常にゼロより大きい。 そのためロジスティック回帰は全訓練点が解に寄与する。

なお、$\lambda = \frac{1}{2C}$ と対応し、SVCのコストパラメータ $C$ と等価だ。

どちらを選ぶべきか?

柔軟判別分析(FDA)- LDAを非線形に

ここまでSVMを「マージン最大化」という独自の視点で見てきた。 実はSVMと同様の「線形手法を非線形に拡張する」という発想は、分類の別の流れにも存在する。

それが柔軟判別分析(FDA: Flexible Discriminant Analysis)だ。 SVMが「境界の余裕」に着目したのに対し、FDAは「クラスの分布を柔軟にモデル化する」という別角度からのアプローチだ。 同じ目的(非線形分類)を、全く異なる道で達成する。

LDAの限界を思い出す

第4章で学んだ線形判別分析(LDA)は、各クラスをガウス分布と仮定し、線形の境界を引く。 美しい理論だが、クラスが非線形な形状を持つとき(例えば、環のような形)には手も足も出ない。

同一データに対するLDA(直線境界)とFDA(曲線境界)の性能差を左右同時に比較するアニメーション
左(LDA):直線境界が多くの点を誤分類(赤バツ)。右(FDA):曲線境界がデータの形状に沿ってほぼ完璧に分類。

LDAを回帰として見る

LDAには興味深い再解釈がある。クラスラベルをダミー変数で表したインジケータ行列 $\mathbf{Y}$ を作り、$\mathbf{Y}$$\mathbf{X}$ に対して線形回帰すると、LDと同等の結果が得られる。

FDAはここに一つの洞察を持ち込む:「線形回帰の代わりに、スプライン回帰などの非パラメトリック回帰を使えばどうなるか?」

答えは:非線形な判別境界が得られる!

形式的には、FDAは次の問題を解く(平均二乗残差の最小化):

$$\text{ASR}(\theta, \beta) = \frac{1}{N} \sum_{l=1}^{L} \left[ \sum_i (\theta_l(g_i) - x_i^T \beta_l)^2 \right]$$

ここで:

LDAはこれを線形変換として解くが、FDAはより一般的な変換を許す。 スプライン回帰などの非パラメトリック手法を使えば、複雑な曲線の判別境界が得られる。

実践的な計算

  1. クラスラベルを $K$ 個のダミー変数に変換
  2. $\hat{\mathbf{Y}} = S_\lambda \mathbf{Y}$ を計算($S_\lambda$ はスムーザー行列)
  3. $\hat{\mathbf{Y}}^T \hat{\mathbf{Y}}$ の固有値分解から判別方向を求める

混合判別分析(MDA)- 1つのクラスに複数の顔

最後に、さらに柔軟な手法、混合判別分析(MDA)を紹介しよう。

あるクラスが「離れた2つの塊」からなっていたらどうなる? 例えば、「犬」というクラスに「小型犬」と「大型犬」が混在するようなケースだ。LDAFDAも、 基本的には「1つのクラスには1つの中心がある」という仮定を置いている。 これが崩れると、境界が大きく歪む。

複数の塊に分かれたクラスに対し、LDA(直線)が失敗し、MDAの複数楕円コンポーネントが適応する過程のアニメーション
LDA(白直線)は誤分類が多い。MDAは青クラスに2つ、黄クラスに3つの楕円コンポーネントを配置し、最終的に緑の複雑な境界で完全に分類する。

MDAの発想

「1つのクラスを複数のガウス分布(コンポーネント)の混合で表現する」

クラス $k$ の密度関数を:

$$P(X | G = k) = \sum_{r=1}^{R_k} \pi_{kr} \phi(X; \mu_{kr}, \Sigma)$$

ここで $\phi(X; \mu_{kr}, \Sigma)$ はガウス分布、$\pi_{kr}$ はそのクラス内での重みだ。

EMアルゴリズムで学習

パラメータ(各コンポーネントの平均と重み)はEMアルゴリズムで推定する。 「暫定的に各点の所属を推測→その推測で最も尤もらしいパラメータに更新→また推測…」を繰り返す手法だ。 鶏と卵の関係を交互に解く、というイメージだ:

Eステップ: 各点がどのコンポーネントに属するかの確率(責任)を計算:

$$w(c_{kr} | x_i) = \frac{\pi_{kr} \phi(x_i; \mu_{kr}, \Sigma)}{\sum_{r} \pi_{kr} \phi(x_i; \mu_{kr}, \Sigma)}$$

Mステップ: 責任を使って各コンポーネントの平均と共分散を更新。

MDAによる分類

事後確率による分類:

$$\hat{G}(x) = \arg\max_k P(G = k | X = x)$$
$$P(G = k | X = x) \propto P(X | G = k) \cdot P(G = k)$$

各記号の意味:

MDAの強み

分類手法の地図

手法決定境界特徴
LDA線形シンプル、確率論的
SVM(線形)線形マージン最大化
SVM(カーネル)非線形カーネルトリックで高次元
FDA非線形LDAを回帰ベースで拡張
MDA非線形各クラスを複数コンポーネントで表現

SVMの核心は「余裕(マージン)を最大化する」という発想だ。 サポートベクターのみに依存するスパース性、カーネルトリックによる非線形拡張、そして正則化との等価性という3つの視点がSVMの本質を照らし出す。

FDAとMDAは「判別分析」をより柔軟に拡張したもので、データの形状に応じて選ぶ道具が変わる。 次章(13章)では、全く異なるアプローチ「プロトタイプ法と k 最近傍法」を学ぶ。