サポートベクターマシンとは[はじめに]
本記事ではサポートベクターマシンについて説明します。Wikipediaによるとサポートベクターマシン(support vector machine、SVM)とは
教師あり学習を用いる識別手法の一つである。パターン認識や回帰分析へ適用できる。
サポートベクターマシンは、現在知られている多くの手法の中で一番認識性能が優れた学習モデルの一つである。サポートベクターマシンがすぐれた認識性能を発揮することができる理由は、未学習データに対して高い識別性能を得るための工夫があるためである。
Wikipediaで言及されている、未知データに対する識別能力のことを汎化能力といいます。実際、数ある識別アルゴリズムのなかでも、サポートベクターマシンの汎化能力はトップクラスです。
サポートベクターマシンは分類問題・回帰問題・新規性発見などの問題に適用できますが、問題の種類ごとに定式化の方法が若干異なります。
この記事ではこのなかでもっとも基本的な分類問題に対するサポートベクターマシンについて述べることにします。これで原理が理解できれば、回帰問題や新規性発見でのアルゴリズム理解はそれほど難しくないと思います。
さて、サポートベクターマシンのアルゴリズムの流れを非常に単純に表現すると次のようになります。
- 学習フェーズ:事前に準備された訓練データ(事前に正解がわかっているデータ)を使って、高い分類性能が得られるようにサポートベクターマシンに学習させます
- 予測フェーズ:未知データを学習済みサポートベクターマシンに与えると、そのデータがどこに分類されるのか、教えてくれます
これらを詳細について説明する前に、ここでサポートベクターマシンの特徴を簡単にまとめておきます。
- 2値分類学習器
サポートベクターマシンは、分類対象が2種類だけの2値データ(2クラスデータ、2群データともいいます)に対する分類器です。したがって、2クラスに分類されるデータを与えると、そのデータをどちらかのクラスに分類します。
たとえば、スパム判定問題では、メールがスパムなのか、そうでないかの2種類しかありませんので、サポートベクターマシンを適用してメールのスパム判定が可能になります。
ところで、2クラスからなる分類対象うち、注目しているクラスに属すデータを正例、それ以外のデータを負例を呼ぶことがあります。スパム判定問題の場合でいうと、正例はスパムメールデータ、負例はスパムでないメールデータ、となります。
実は代表的なサポートベクターマシンソフトウェアを使うと、3クラス以上の多クラスデータも分類できます。上述したようにサポートベクターマシンは2クラスデータしか分類できませんので、多クラスデータに適用するには工夫が必要です。実際ソフトウェア内部では、2クラスデータ用のサポートベクターマシンを多数生成することにより多クラスデータを分類しています。ペアワイズ法やone-versus-rest法が用いられますが、詳細は参考文献を参照してください。
- 線形分離可能なデータに対する分類器
線形分離可能とは、$n$次元データが与えられたとき、正例のデータと負例のデータを$n-1$次元超平面で綺麗に2つに分けられることを言います。
たとえば、2次元の2値データを直線で綺麗に正例・負例の2つに分離できればそのデータは線形分離ということになります。サポートベクターマシンは線形分離可能なデータに対する分類器です。この分類超平面は無数に存在しますが、サポートベクターマシンでは正例・負例データとの距離が最大になるように分類超平面を選びます。
それでは2値クラス分類問題に対するサポートベクターマシンを定式化していきます。