サポートベクターマシン(SVM)は、教師あり学習を用いた分類と回帰のための機械学習アルゴリズムである。高次元空間においてデータ点を分離する最適な超平面を見つけることを目的とし、特にマージン最大化の原理に基づいて汎化性能を高める。カーネルトリックを利用することで非線形分類も可能となり、テキスト分類、画像認識、バイオインフォマティクスなど幅広い応用分野を持つ。
1.1 超平面とマージン
超平面は、特徴空間を二つの領域に分割する(d-1)次元の部分空間である。例えば二次元空間では直線、三次元空間では平面に相当する。マージンは、超平面から最も近いデータ点までの距離の2倍と定義される。SVMはこのマージンを最大化する超平面を探索する。
1.2 サポートベクター
サポートベクターとは、マージンの境界上に位置するデータ点のことである。これらの点が超平面の位置と方向を決定づけ、他のデータ点は超平面の学習に直接影響を与えない。この性質によりSVMはメモリ効率が良く、少数のサンプルで決定境界を表現できる。
1.3 マージン最大化の直感的理解
マージンが大きいほど、新しいデータ点に対する分類の余裕が増し、汎化誤差が低減する。直感的には、二つのクラスを分ける際に、両クラスから可能な限り離れた境界を選ぶことで、ノイズや変動に対して頑健な分類器が得られる。これがマージン最大化の核心的なアイデアである。
SVMの学習は、マージンを最大化する超平面のパラメータを求める最適化問題として定式化される。以下では線形分離可能な場合と不可能な場合に分けて説明する。
2.1 線形分離可能な場合
データが完全に線形分離可能である場合、マージン内にデータ点が存在しないハードマージンSVMが適用される。
2.1.1 ハードマージンSVM
| ハードマージンSVMは、すべてのデータ点が超平面から正しい側にあり、かつマージン境界の外側にあるという制約の下で、マージンを最大化する。超平面を w・x + b = 0 と表すとき、目的関数は | w | の最小化となり、制約条件は y_i (w・x_i + b) ≥ 1 である。 |
|---|
2.1.2 ラグランジュ双対問題
元の最適化問題(主問題)は制約付き凸二次計画問題であり、ラグランジュ乗数法を用いて双対問題に変換される。双対問題ではサポートベクターに対応するラグランジュ乗数のみが非ゼロとなり、カーネルトリックへの拡張が容易になる。双対定式化により、高次元空間での計算効率が向上する。
2.2 線形分離不可能な場合
現実のデータでは完全な分離が不可能なことが多く、ソフトマージンSVMが用いられる。
2.2.1 ソフトマージンSVM
ソフトマージンSVMは、一部のデータ点がマージン内または誤分類されることを許容する。これにより、完全分離を強制するよりも汎化性能が向上する場合がある。
2.2.2 スラック変数とペナルティパラメータC
| 各データ点にスラック変数 ξ_i ≥ 0 を導入し、制約を y_i (w・x_i + b) ≥ 1 - ξ_i と緩和する。目的関数は | w | ^2 / 2 + C Σξ_i となり、パラメータCは誤分類へのペナルティの強さを制御する。Cが大きいほど誤分類を厳しく罰し、小さいほどマージン最大化を優先する。 |
|---|
カーネル法は、データを高次元特徴空間に写像し、その空間での線形超平面を学習する手法である。SVMと組み合わせることで非線形分類が可能になる。
3.1 カーネルトリックの原理
カーネルトリックとは、明示的に高次元写像を計算せず、元の空間での内積をカーネル関数で置き換える方法である。双対問題における内積 x_i・x_j を K(x_i, x_j) に置き換えることで、計算量の爆発を避けながら非線形決定境界を実現する。
3.2 代表的なカーネル関数
3.2.1 線形カーネル
K(x_i, x_j) = x_i・x_j。線形分離可能なデータに対して用いられ、パラメータが少なく高速である。テキスト分類など高次元特徴量のタスクで有効。
3.2.2 多項式カーネル
K(x_i, x_j) = (γ x_i・x_j + r)^d。次数 d とオフセット r をパラメータに持ち、非線形性を調整できる。d が大きいと過学習しやすい傾向がある。
3.2.3 動径基底関数(RBF)カーネル
| K(x_i, x_j) = exp(-γ | x_i - x_j | ^2)。ガウシアンカーネルとも呼ばれ、最も広く使われる。単一のパラメータ γ で複雑さを制御でき、様々な形状の決定境界を表現できる。 |
|---|
3.3 カーネル関数の選択
カーネル選択は問題に依存する。一般にRBFカーネルが第一候補とされるが、特徴量が多い場合は線形カーネル、データの構造に応じて多項式カーネルも検討される。クロスバリデーションを用いて最適なカーネルとハイパーパラメータを選ぶことが推奨される。
SVMの学習は大規模な二次計画問題となるため、効率的なアルゴリズムと実装が必要である。
4.1 逐次最小問題最適化法(SMO)
SMOは、大規模二次計画問題を多数の小規模な二次計画問題に分解して解く手法である。各ステップで二つのラグランジュ乗数を選択し、解析的に更新する。これによりメモリ消費を抑えつつ高速に収束するため、実用的なSVM実装の基盤となっている。
4.2 数値計算上の注意点
SVMの学習では、数値的安定性を確保するために以下の点に注意が必要である。特徴量のスケーリング(標準化や正規化)は必須であり、特にRBFカーネルでは距離計算に影響する。カーネル行列の条件数が悪化しないよう、パラメータCやγの調整を適切に行う。また、収束判定の許容誤差を適切に設定することが重要である。
4.3 主要なライブラリとツール
4.3.1 LIBSVM
LIBSVMは、台湾国立大学のChih-Chung ChangとChih-Jen Linによって開発されたオープンソースのSVMライブラリである。C++で実装され、コマンドラインツールや多言語インターフェース(Python、MATLAB、Rなど)を提供する。SMOや各種カーネル関数を実装し、分類・回帰・異常検知をサポートする。
4.3.2 scikit-learnのSVM実装
scikit-learnは、Pythonの機械学習ライブラリであり、SVMモジュールとしてSVC(分類)、SVR(回帰)などを提供する。LIBSVMをラップしており、GridSearchCVによるハイパーパラメータ探索やパイプラインとの連携が容易である。広く使われるデータ分析環境との親和性が高い。
SVMはその高い汎化性能と理論的背景から、多くの実世界問題で利用されている。
5.1 テキスト分類とスパムフィルタリング
文書を単語の出現頻度でベクトル化し、線形カーネルSVMで分類する手法は、スパムメールフィルタリングやニュースのカテゴリ分類で効果を発揮する。高次元かつ疎なデータに対して高い精度を達成する。
5.2 画像認識と手書き文字認識
画像の画素値を特徴ベクトルとしてSVMを適用することで、手書き数字認識(MNIST)など様々な画像認識タスクで標準的な手法となった。カーネルトリックにより非線形なパターンを捉えられるが、深層学習の台頭により現在は補完的な役割となっている。
5.3 バイオインフォマティクス
遺伝子発現データやタンパク質配列の分類において、SVMは小サンプル高次元データに強いことから頻用される。癌の診断や薬剤応答予測などに応用されている。
5.4 顔認識
顔画像から抽出された特徴量を入力としてSVMで識別するシステムは、照明や表情の変動に対しても頑健である。EigenfacesやLocal Binary Patternsと組み合わせて用いられる。
SVMは強力な手法であるが、いくつかの制約があり、近年は他の手法との比較や改良が進んでいる。
6.1 SVMの弱点
SVMは大規模データに対して計算時間とメモリ消費が増大しやすい。特にサンプル数が数十万を超えると学習が非現実的になる場合がある。また、カーネルやハイパーパラメータの選択が性能に大きく影響し、適切な調整にはクロスバリデーションが必要となる。さらに、確率的な出力(クラス確率)を直接得られず、追加処理が必要である。
6.2 他の手法との比較
決定木やランダムフォレストと比較すると、SVMは理論的裏付けが強く、小サンプル高次元データで優れる一方、大規模データではランダムフォレストや勾配ブースティングが優位となる。深層学習は大量データと複雑なパターンでSVMを凌ぐが、解釈性や小サンプル性能ではSVMが勝る。
6.3 関連手法(SVR,One-class SVM)
サポートベクター回帰(SVR)は、SVMを回帰問題に拡張したもので、ε-不感応領域内の誤差を許容しながらマージンを最大化する。One-class SVMは、正例のみから学習し外れ値検出や異常検知に用いられる。これらはいずれもカーネルトリックを活用し、SVMのフレームワークを共有している。