線形サポートベクターマシン(SVM)を徹底解説:理論・実装・最適化ガイド

はじめに

線形サポートベクターマシン(linear SVM)は、機械学習における代表的な分類アルゴリズムの一つで、高次元データやスパースデータに強いという特徴があります。本稿では、線形SVMの理論的基礎、最適化手法、実装上の注意点、ハイパーパラメータの選び方、実運用での応用例までを詳しく解説します。数式やアルゴリズムの直感的意味も丁寧に取り上げるため、実務での応用や論文理解に役立つ内容です。

線形SVMの基本概念

線形SVMは、入力ベクトル x に対して線形分離平面 f(x) = w・x + b を学習し、分類は sign(f(x)) によって行います。目的は、クラス間のマージン(境界から最も近いデータ点までの距離)を最大化することです。線形分離が可能な場合、最適解は次の制約付き最適化問題で与えられます。

ハードマージン(分離可能):

minimize (1/2) ||w||^2 subject to y_i (w・x_i + b) >= 1 for all i

しかし現実のデータはノイズや重なりがあるため、ソフトマージン(誤分類許容)を導入します。

ソフトマージン(一般):

minimize (1/2) ||w||^2 + C * sum_i ξ_i subject to y_i (w・x_i + b) >= 1 - ξ_i, ξ_i >= 0

ここで C は正則化パラメータで、誤分類とマージンのトレードオフを制御します。損失関数としてはヒンジ損失 L_i = max(0, 1 - y_i (w・x_i + b)) が用いられます。

幾何学的直感とマージン

マージンは 2/||w|| で表され、||w|| を小さくするほどマージンは大きくなります。マージン最大化の直感は、学習データからの多少のゆらぎに対して分類境界が安定になる点にあります。大きなマージンは汎化性能(未観測データでの性能)を向上させる傾向がありますが、過度な正則化は逆にアンダーフィッティングを招きます。

双対問題とサポートベクトル

SVMは双対問題(ラグランジュ双対)を導出することで、解がサポートベクトルに依存することを示します。双対解ではパラメータ w がラグランジュ乗数 α_i の線形結合で表されます。

w = sum_i α_i y_i x_i, 0 <= α_i <= C (ソフトマージン)

非ゼロの α_i を持つ訓練例が「サポートベクトル」であり、決定境界はこれらの点によって決定されます。線形SVMではサポートベクトルの数が学習コストや予測時の計算コストに影響します。

最適化手法と大規模化のテクニック

  • SMO(Sequential Minimal Optimization): 2変数ずつの最適化を繰り返す古典的アルゴリズム。非線形カーネルSVMで広く使われるが、線形問題にも適用可能。
  • LIBLINEARの座標降下法: 線形SVM専用に設計された最適化手法で、大規模で疎なデータに高速。一次最適化と二乗ヒンジ損失の変種を効率的に解ける。
  • 確率的勾配降下(SGD)/ミニバッチ: Pegasos(確率的平均化勾配法)など、オンライン学習的に解く手法。非常に大きなデータセットやストリーミングデータに適する。
  • 座標・確率的ハイブリッド: 高次元スパースデータでは、特徴単位の更新を組み合わせた手法が有効。

ハイパーパラメータ(C)の役割と選び方

C は誤分類をどれだけ許容するかを決める。C が大きいと誤分類ペナルティが厳しくなり、訓練誤差を小さくする方向に働く(過学習の可能性)。C が小さいと正則化が強くなり、マージンが広がるが訓練誤差は増えうる。一般的には交差検証(k-fold CV)で C を探索します。対数スケール(例: 1e-4, 1e-3, ..., 1e4)で試すことが多いです。

前処理と特徴量設計

  • 標準化(平均0・分散1)やL2正規化は重要。特に異なるスケールの特徴が混在する場合、標準化しないと1つの特徴が支配的になります。
  • スパースなテキスト特徴(Bag-of-Words, TF-IDF)と相性が良い。線形SVMは高次元かつスパースな空間で高い性能を示すことが多い。
  • カテゴリ特徴はワンホット化が一般的だが、高次元化のために特徴選択やハッシュ化トリック(feature hashing)を用いることがある。

多クラス分類と確率推定

線形SVMは本質的には二値分類器です。多クラス化の一般的手法は One-vs-Rest(OvR)や One-vs-One、あるいは Crammer-Singer のような一括最適化アプローチです。実装上は速さとメモリ消費の観点で OvR が広く使われます。

また、SVMの出力 f(x) は確率ではないため、確率推定が必要ならば Platt scaling(ロジスティック回帰でキャリブレーション)や Isotonic regression を用いるのが一般的です。

評価指標とクラス不均衡への対処

正確度だけでなく、AUC、精度・再現率・F1スコアを使うべき場面が多い。クラス不均衡があるときはサンプル重みの導入(Cをクラスごとに変える、weights パラメータ)やサンプリング(オーバー/アンダーサンプリング)が有効です。

実運用での注意点とベストプラクティス

  • 特徴のスケーリングは学習データの統計量で行い、テスト時には同じ変換を適用する。
  • 大規模データなら LIBLINEAR や SGD を利用。メモリ制約が厳しい場合はミニバッチSGDやオンライン学習を検討。
  • スパースデータでは疎行列表現を活用し、計算とメモリを節約する。
  • ハイパーパラメータの探索はグリッドサーチよりもランダムサーチやベイズ最適化のほうが低コストで効果的になる場合がある。
  • モデルの解釈性:線形SVMの係数 w は特徴の相対的重要度の指標になる。ただしスケーリングによる影響を受けるため、解釈前に特徴ごとのスケールを揃えておくこと。

計算複雑性とスケーリングのヒント

一般にSVMの訓練コストはデータ数 N と特徴数 d に依存します。カーネルを使う場合はカーネル行列が問題となるため O(N^2)〜O(N^3) のコストが発生しやすいが、線形SVMはよりスケーラブルで近年のライブラリはほぼ線形時間で学習できることが多いです。大規模問題では確率的手法や分散計算(データ並列)を検討してください。

理論的性質と一般化境界

SVMの一般化性能はマージンに基づく理論的解析で説明され、VC次元やマージン境界による汎化誤差の上界が知られています。直感的には大きなマージンと適切な正則化が良好な汎化性能に繋がりますが、ノイズの多いデータでは過度なマージン最大化が有害になることもあります。

実例:テキスト分類での適用ケース

テキスト分類(スパム検出、トピック分類等)では線形SVMがよく使われます。特徴をTF-IDFで作成し、L2正規化した後に線形SVMを学習すると高い性能を示すことが多いです。計算上は疎行列のままLIBLINEARを用いると非常に高速でメモリ効率も良好です。

まとめと推奨フロー

線形SVMは理論的に堅牢で実務的にも扱いやすい分類器です。導入・運用時の推奨手順は次のとおりです:

  • データ前処理(欠損処理、スケーリング、特徴選択)
  • 特徴エンジニアリング(TF-IDF、ワンホット、ハッシュ化など)
  • モデル選択(LIBLINEAR, SGD, 他)
  • ハイパーパラメータ探索(クロスバリデーションで C 等を調整)
  • 評価(AUC, F1 等)、必要なら確率キャリブレーション
  • 運用時には定期的なリトレーニングとモニタリングを実施

参考文献