サポートベクターマシン(SVM: Support Vector Machine)は、機械学習の教師あり学習における分類(classification)問題を解決するための代表的なアルゴリズムの一つです。線形分離可能なデータに対して非常に効果的であり、また非線形なデータに対してもカーネル法を用いることで柔軟に対応できます。
1. 基本概念
SVMの基本的な考え方は、「2つのクラスを分離する最適な超平面(hyperplane)を求める」ことです。この超平面は、次の条件を満たすように設計されます:
-
最大マージン(Margin):分類の境界から各クラスの最近傍のデータ点(サポートベクター)までの距離が最大になるように超平面を定める。
-
サポートベクター:マージンの境界線上にあるデータ点。分類結果に直接影響を与えるため、SVMの名前の由来でもある。
2. 数学的定式化(線形SVM)
目的
線形分離可能な2クラスのデータに対して、次のような超平面を求める:
ここで、
-
:重みベクトル(法線ベクトル)
-
:バイアス項(切片)
-
:入力ベクトル
この超平面からの距離が最大になるように、最適化問題として次を解く:
3. ソフトマージンSVM
現実のデータは完全に線形分離可能ではない場合が多いため、誤分類を許容する「ソフトマージン」という拡張があります。スラック変数 を導入して以下の最適化を行います:
ここで は正則化パラメータであり、誤分類の許容度とマージン最大化のバランスを取ります。
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