SVMとは
Support Vector Machine / サポートベクターマシン
クラス間のマージンを最大化する境界を見つけることで分類・回帰する機械学習モデル
ひとことで言うと
データを2つのグループに、できるだけ余裕を持って分ける境界線を見つけるAIモデル。
概要
SVM(Support Vector Machine、サポートベクターマシン)とは、異なるクラスのデータ点を隔てる境界(超平面)のうち、各クラスの最も近いデータ点(サポートベクター)との距離(マージン)が最大になるものを求める機械学習モデル。 線形に分離できないデータに対しては、カーネル関数を用いてデータをより高次元の空間へ写像し、その空間上で線形分離可能にする「カーネルトリック」という手法が使われる。 少量〜中規模のデータで、特徴量の次元数が多いタスクに強いとされ、深層学習が普及する以前は分類タスクの代表的な手法として広く使われていた。
背景
単純な線形分類器は、境界の引き方によって未知データへの汎化性能が大きく変わってしまうという課題があった。 SVMは、マージンを最大化する境界を選ぶことで、学習データに対する汎化性能をより安定させるために考案された。
歴史
1963年: VapnikとChervonenkisが、線形分離可能なデータに対するマージン最大化の考え方を提案。 1992年: Boserらが、カーネルトリックを導入し非線形分離が可能なSVMを提案。 1995年: CortesとVapnikが、きれいには分離できないデータにも対応するソフトマージンSVMを発表し、現在広く使われるSVMの形式を確立。
利点
- マージン最大化に基づく理論的な裏付けがあり、少量のデータでも安定した汎化性能を得やすい
- カーネルトリックにより、線形分離できない複雑なデータにも対応できる
欠点
- 学習データ数が非常に大きい場合、計算コストが急激に増加し拡張性に課題がある
- カーネル関数の種類やハイパーパラメータの選び方が性能を大きく左右し、チューニングに専門知識を要する