サポートベクターマシン(SVM)

サポートベクターマシン(SVM: Support Vector Machine)は、機械学習の教師あり学習における分類(classification)問題を解決するための代表的なアルゴリズムの一つです。線形分離可能なデータに対して非常に効果的であり、また非線形なデータに対してもカーネル法を用いることで柔軟に対応できます。


1. 基本概念

SVMの基本的な考え方は、「2つのクラスを分離する最適な超平面(hyperplane)を求める」ことです。この超平面は、次の条件を満たすように設計されます:

  • 最大マージン(Margin):分類の境界から各クラスの最近傍のデータ点(サポートベクター)までの距離が最大になるように超平面を定める。

  • サポートベクター:マージンの境界線上にあるデータ点。分類結果に直接影響を与えるため、SVMの名前の由来でもある。


2. 数学的定式化(線形SVM)

目的

線形分離可能な2クラスのデータに対して、次のような超平面を求める:

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

ここで、

  • w\mathbf{w}:重みベクトル(法線ベクトル)

  • bb:バイアス項(切片)

  • x\mathbf{x}:入力ベクトル

この超平面からの距離が最大になるように、最適化問題として次を解く:

minw,b12w2\min_{\mathbf{w}, b} \frac{1}{2} \|\mathbf{w}\|^2
制約:yi(wxi+b)1,i\text{制約:} \quad y_i(\mathbf{w} \cdot \mathbf{x}_i + b) \geq 1, \quad \forall i


3. ソフトマージンSVM

現実のデータは完全に線形分離可能ではない場合が多いため、誤分類を許容する「ソフトマージン」という拡張があります。スラック変数 ξi\xi_i を導入して以下の最適化を行います:

minw,b,ξ12w2+Ci=1nξi\min_{\mathbf{w}, b, \xi} \frac{1}{2} \|\mathbf{w}\|^2 + C \sum_{i=1}^n \xi_i
制約:yi(wxi+b)1ξi,ξi0\text{制約:} \quad y_i(\mathbf{w} \cdot \mathbf{x}_i + b) \geq 1 – \xi_i, \quad \xi_i \geq 0

ここで CC正則化パラメータであり、誤分類の許容度とマージン最大化のバランスを取ります。


4. 非線形SVMとカーネル法

SVMは元々線形分類器ですが、**カーネル関数(kernel function)**を使うことで非線形な分類も可能になります。カーネル関数は、入力データを高次元空間に写像して、線形に分離できるようにします。

代表的なカーネル関数:

  • 多項式カーネル(Polynomial kernel)

  • RBFカーネル(Radial Basis Function, ガウスカーネル)

  • シグモイドカーネル(Sigmoid kernel)


5. 特徴と利点・欠点

利点

  • 高次元でも効果的(次元の呪いに比較的強い)

  • カーネル法により柔軟な非線形分類が可能

  • 少数のサポートベクターだけを使うため計算効率が良い(推論時)

欠点

  • 学習時間が遅くなる(大規模データに弱い)

  • ハイパーパラメータ(Cやカーネルの種類)の選定が重要

  • 多クラス分類に対応するには拡張が必要(例:一対他、一対一)


6. 多クラス分類への拡張

SVM自体は2クラス分類が基本ですが、多クラス問題には以下のような手法で対応します:

  • 一対他(One-vs-Rest, OvR)

  • 一対一(One-vs-One, OvO)


まとめ

サポートベクターマシン(SVM)は、「分類境界を最大限分離する超平面を求める」ことを基本とした強力な分類アルゴリズムです。線形・非線形の両方に対応でき、少量の高次元データにも有効ですが、大規模データには学習時間やメモリの観点で課題があります。

生成日:2025/06/01