線形SVMとは?概要・数式・実装・応用まで徹底解説

線形SVMとは — 概要と直感

線形SVM(Support Vector Machine)は、与えられたデータを線形分離可能な場合は超平面で分けることを目的とする教師あり学習の手法の一つです。基本的な目的は「クラス間の境界のマージン(余裕)を最大化する」ことであり、誤分類を許容する場合はペナルティを導入してトレードオフを取ります。線形SVMは特徴空間での線形判別器であり、重みベクトルwとバイアスbにより f(x)=sign(wᵀx + b) で分類を行います。

数学的定式化(ハードマージンとソフトマージン)

データ {(x_i, y_i)}(y_i ∈ {+1, −1})に対して、線形SVMは次の最適化問題として定式化できます。

ハードマージン(完全分離可能な場合):

minimize (1/2) ||w||^2 subject to y_i (wᵀ x_i + b) ≥ 1 (すべての i)

ソフトマージン(ノイズや重なりがある現実的な場合):

minimize (1/2) ||w||^2 + C ∑ ξ_i subject to y_i (wᵀ x_i + b) ≥ 1 − ξ_i, ξ_i ≥ 0

ここで ξ_i はスラック変数(マージン内・誤分類の許容度)、C は誤分類に対するペナルティ係数(正則化パラメータ)です。C が大きいほど誤分類を嫌い、マージンが狭くなる傾向があります。

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

上の問題は双対問題へ変換できます(カーネル化の基礎)。ソフトマージンの双対は次のようになります。

maximize ∑ α_i − (1/2) ∑_{i,j} α_i α_j y_i y_j (x_iᵀ x_j) subject to 0 ≤ α_i ≤ C, ∑ α_i y_i = 0

最適解では、w = ∑ α_i y_i x_i となり、α_i がゼロでないデータ点(サポートベクトル)が決定境界を決めます。性質として、

  • α_i = 0:境界に影響を与えない点(マージン外)
  • 0 < α_i < C:ちょうどマージン上にある点(y_i(wᵀx_i + b)=1)
  • α_i = C:マージン違反(誤分類またはマージン内にある点)

マージン幅の解釈

2つの支持平面は wᵀx + b = ±1 で表されるため、マージン幅(クラス間の距離)は 2 / ||w|| です。SVM の目的はこの幅を最大化することと同値で、結果的に一般化性能を高めることを目指します。

損失関数と正則化(ヒンジ損失)

線形SVMはヒンジ損失を最小化する枠組みでも説明できます。ヒンジ損失は L(y, f(x)) = max(0, 1 − y f(x)) であり、これに L2 正則化 (1/2)||w||^2 を加えると、上記のソフトマージン問題と等価になります(C は損失の重み)。ヒンジ損失はロジスティック損失(ロジスティック回帰)と比べて決定境界周りを重視する特徴があります。

線形SVMの数値解法と実装

  • 二次計画法(QP):古典的だが計算量が大きく、データ数が多いと非現実的。
  • SMO(Sequential Minimal Optimization):libsvm で採用。主にカーネルSVM向け。
  • 座標降下・確率的勾配降下(SGD)やPegasos:大規模線形SVMに有効で、疎な高次元データ(テキスト分類など)でよく使われる。
  • LIBLINEAR:線形問題に特化した高速ソルバー。L1/L2 正則化や二値・多クラスに対応。

線形SVMとカーネルの関係

線形SVMはカーネルを用いない特殊ケースです。非線形分離が必要な場合はカーネル関数(RBF, 多項式など)を用いて暗黙的に高次元空間に写像できます。ただし、実務では「特徴を明示的に加工して線形SVMを使う」方が計算効率や解釈性の面で有利なことが多いです(特にテキストやボアスト表現など高次元疎データの場合)。

線形SVMの利点・欠点

  • 利点:計算効率(専用ソルバーで大規模データに対応)、解釈性(重みベクトルによる特徴重要度の把握)、過学習に強い(マージン最大化)、高次元疎データでの性能が良い。
  • 欠点:データが非線形に分離される場合は性能が低下。確率的出力を直接出さない(確率推定が必要)。ハイパーパラメータ(C)の調整が必要。

線形SVMとロジスティック回帰の比較

  • 損失:SVM はヒンジ損失、ロジスティック回帰は対数尤度(ロジスティック損失)。
  • 目的:SVM はマージン最大化を強調、ロジスティック回帰は事後確率の尤度を最大化。
  • 出力:ロジスティック回帰は確率を直接出す(0〜1)。SVM は距離スコアを出し、確率化には Platt スケーリング等が必要。
  • 実務:両者はしばしば似た性能を示すが、外れ値やクラス重なりに対する挙動が異なるため用途に応じて選ぶ。

実践的な注意点とチューニング

  • 特徴スケーリング:必須。標準化(平均0、分散1)や正規化は学習の安定性に重要。
  • 正則化パラメータC:クロスバリデーションで最適化する。C が小さいとよりソフトなマージン(過学習抑制)。
  • 不均衡データ:class_weight(重み)やサンプリングで対処。誤分類コストをクラス別に調整可能。
  • スパース性:L1 正則化を用いると重みが疎になり特徴選択効果が得られる(LIBLINEAR 等で対応)。
  • 大規模データ:SGDClassifier(sklearn)やLIBLINEAR、オンライン学習アルゴリズム(Pegasos)を検討。
  • 多クラス化:One-vs-Rest(OvR)が一般的。Crammer–Singer のような多クラスSVMも存在。

応用例

  • テキスト分類(スパム検出、ニュース分類)— 高次元で疎な特徴に強い。
  • 画像の線形特徴ベースの分類(事前特徴抽出後)
  • バイナリ分類問題のベースラインモデルとして広く使用

まとめ

線形SVMは「マージン最大化」に基づくシンプルかつ強力な線形分類器です。高次元・疎データに強く、適切に正則化・スケーリングすれば実務で高い汎化性能を示します。一方、非線形な境界が必要な場面ではカーネルSVMや特徴変換が必要です。実装面では LIBLINEAR、LIBSVM、scikit-learn(LinearSVC, SGDClassifier)などがあり、データ規模や要件に応じてソルバーを選ぶことが重要です。

参考文献