サポートベクターとは?SVMの基礎からカーネル・マージン・実務まで徹底解説
サポートベクターとは — 概要と直感
「サポートベクター(support vector)」は、機械学習の分類手法であるサポートベクターマシン(SVM: Support Vector Machine)において重要な役割を果たすデータ点のことを指します。SVMは、クラス間の境界(決定境界)をできるだけ「余裕(マージン)」を持って引くことを目的とするアルゴリズムで、その境界を最も制約する、つまり境界の位置を決める上で影響力の大きい訓練データ点が「サポートベクター」です。
線形SVMの直感:マージンとサポートベクター
線形に分離可能な2クラス分類を考えると、SVMは分類面(直線や超平面)を複数候補の中から選びます。その基準は「2クラス間のマージン(境界から最も近いデータ点までの距離)」を最大化することです。最適な境界を決めるとき、境界から最も近い点(あるいは複数の点)が境界の位置を決定します。これらがサポートベクターであり、その他の離れている点は境界に影響を与えません。
- マージン:2つのクラスを分ける決定面と、各クラスに最も近い点との距離の合計または2倍(定義による)。
- サポートベクター:最適化問題でラグランジュ乗数がゼロでないデータ点(後述)。
数式的定式化(簡潔に)
線形SVMの代表的な定式化(ハードマージン)は、重みベクトル w とバイアス b を求める最適化問題として表されます:
minimize 1/2 ||w||^2 subject to y_i (w·x_i + b) ≥ 1 for all i
この凸最適化問題をラグランジュ双対問題に変換すると、解は訓練データの線形結合として表現され、係数(ラグランジュ乗数)が正となるデータ点がサポートベクターになります。双対問題の性質上、最終的な決定関数は訓練点のうちサポートベクターのみを使って表現されるため、モデルはこれらの点に依存します。
ソフトマージンと正則化(実運用上の重要性)
現実のデータはしばしば線形分離不可能です。そこでSVMではスラック変数 ξ_i を導入し、誤分類をある程度許容する「ソフトマージン」最適化を行います。目的関数は以下のように変わります:
minimize 1/2 ||w||^2 + C Σ ξ_i subject to y_i (w·x_i + b) ≥ 1 − ξ_i, ξ_i ≥ 0
ここで C は誤分類(またはマージン違反)をどれだけ厳しく罰するかを決める正則化パラメータです。Cが大きいほど誤分類を許さず複雑な境界を学習しやすく、Cが小さいほど滑らかな(マージンが広い)境界になります。
カーネル法:非線形問題への拡張
SVMの強力な特徴の一つが「カーネルトリック」です。データを高次元空間に写像して線形分離可能にし、その空間で線形SVMを適用するという考え方です。計算上は高次元写像 φ(x) を明示的に計算するのではなく、内積 K(x, x') = φ(x)·φ(x') を計算する関数(カーネル)を用います。
- 代表的なカーネル:線形、ポリノミアル、RBF(ガウシアン)、シグモイド
- RBFカーネルは局所的な影響力を持ち、多くの実務でよく使われる
- 理論的基礎:カーネルはMercerの条件を満たす必要がある(正定値核)
双対表現とサポートベクターの決定
SVMの双対問題を解くと、最終的な分類器は次のように書けます:
f(x) = Σ α_i y_i K(x_i, x) + b
ここで α_i がラグランジュ乗数で、最終的に α_i > 0 の訓練点 x_i がサポートベクターです。α_i がゼロである点は分類器に寄与しません。このスパース性がSVMの計算的利点の一つであり、予測時にはサポートベクターのみを使えば良いという特徴になります。
学習アルゴリズムと計算コスト
SVMは凸最適化で解が一意に決まることが多いですが、実際のソルバにはいくつかの方式があります。代表的なものはLIBSVMやSMO(Sequential Minimal Optimization)で、これらは双対問題を効率的に解くための実装です。
- 計算コスト:サンプル数 n が大きいと計算量およびメモリが大きくなる(一般にO(n^2)〜O(n^3)の振る舞いを示すことが多い)。
- 大規模データ:線形SVM(線形カーネル)や近年のライブラリ(SGDベース、LIBLINEARなど)を使うことが実用的。
ハイパーパラメータとチューニング
SVMの性能はハイパーパラメータに敏感です。代表的なもの:
- C:誤分類のペナルティ(正則化)。
- γ(ガンマ):RBFカーネルやポリノミアルカーネルでのスケールを決めるパラメータ(RBFでは近傍のサイズを決定)。
- カーネルの種類や次数(ポリノミアルの次数など)。
交差検証(クロスバリデーション)やグリッドサーチ、ランダムサーチで最適化するのが一般的です。また、特徴量のスケーリング(標準化/正規化)は必須で、スケーリングしないと距離ベースのカーネルで性能が悪化します。
多クラス分類への拡張
SVMはもともと2クラス分類器ですが、多クラス分類には以下のような戦略で拡張されます:
- one-vs-rest(OvR):各クラスに対してそのクラス vs その他 を学習する。
- one-vs-one(OvO):クラス対クラスの二値分類子をすべて組み合わせる(kクラスならk(k-1)/2個)。
実装によっては内部でどちらかの戦略を選んでいます。大規模データではOvRの方が計算効率が良い場合が多いです。
メリット・デメリットと適用場面
メリット:
- 高次元データ(特徴量が多い)でも有効なことが多い。
- カーネルトリックにより非線形分離問題に対応可能。
- 理論的にしっかりした凸最適化で安定した解が得られる。
- スパース性により、サポートベクターのみで予測可能。
デメリット:
- サンプル数が非常に多い場合、学習コスト・メモリが大きくなる。
- ハイパーパラメータ(C, γなど)のチューニングが必要。
- 確率的出力は直接得られない(Plattスケーリング等の後処理が必要)。
- ノイズや外れ値に敏感な場合がある(Cの調整である程度対応可能)。
実務での注意点とベストプラクティス
- 特徴量のスケーリング(標準化)は必須。特にRBFやポリノミアルは入力のスケールに敏感。
- データの次元が非常に高くかつサンプル数が少ない場合は、SVMはよく機能することが多い(テキスト分類など)。
- サンプル数が多い場合は線形SVMや確率的勾配降下法(SGD)を用いた近似の利用を検討する。
- モデル評価は交差検証で安定させ、クラス不均衡がある場合は適切な評価指標(AUC, F1など)を使う。
- カーネル選択はデータの性質に合わせて行う。RBFは汎用的だが、線形で十分な場合は線形SVMが計算負荷が低く好ましい。
応用例と実績
SVMは1990年代末から2000年代にかけて多くの分野で高性能を示し、顔認識、テキスト分類(スパム検出、文書分類)、バイオインフォマティクス(遺伝子発現データの分類)などで利用されてきました。深層学習の普及以降は画像処理など一部分野でニューラルネットワークに置き換わることが多いものの、中規模データや高次元低サンプルの問題では依然として強力な手法です。
まとめ
サポートベクターはSVMの学習結果を決める重要なデータ点であり、SVMのスパース性や効率的推論に寄与します。SVM自体はマージン最大化という明確な目的関数を持ち、カーネルトリックやソフトマージンなどで現実問題に柔軟に対応できます。実務では特徴量スケーリング、ハイパーパラメータの適切なチューニング、大規模データへの対処法(線形SVMや近似法)を意識することが成功の鍵です。
参考文献
- C. Cortes and V. Vapnik, "Support-Vector Networks", 1995.
- Wikipedia: Support-vector machine
- LIBSVM — a library for SVMs (Chih-Chung Chang and Chih-Jen Lin)
- scikit-learn: Support Vector Machines — User Guide
- B. Schölkopf & A.J. Smola, "Learning with Kernels", MIT Press / Springer, 2002.
- John C. Platt, "Sequential Minimal Optimization: A Fast Algorithm for Training Support Vector Machines"


