サポートベクターマシーン ( SVM )とは

OpenCV で C やら SVC など出てきて意味不明だったので少し調べた。

教師あり学習を用いるパターン認識モデルの一つ。
データ間の境界を決定する学習器

教師データから選別対象の規則を見つけ出し ( 基準 ( モデル ) を作成し )、
その基準にサンプル当てはめて判別する方法?という認識でいく。

 

教師あり学習
機械学習の手法の一つ。
事前に与えられたデータを元に学習を行う。

機械学習
人が行っている学習能力の機能をコンピュータで実現しようとする手法。

パターン認識
自然情報処理の一つ。
とあるデータから一定の規則や意味をもつ対象を選別して取り出す処理。

 

SVM の特徴

特徴は マージン最大化
マージン:判別する境界データとの距離

 

2 次元の特徴空間に A と B に属するデータがある時、
x 軸と y 軸を加味して分類線を引くと以下のようになる。
https://qiita.com/rennnosuke/items/cd01aa855196340167df#soft_margin   より拝借

f:id:koshinRan:20180601002527p:plain

 

マージン ( 距離 ) が大きいと「少しデータが変わっただけで誤判定してしまう」
というミスをなくすことが出来る。

なお、境界線と最も近くにあるデータを「サポートベクトル」という。
cv::ml::SVM::Types にて、分類・回帰などでてくる。

 

境界の近くにあるデータは、言い換えると「A か B か微妙」なデータだと見なせる。
故に、境界とデータとの距離 ( マージン ) を大きくするようにして
誤判別を防ぐ。( これがマージン最大化 )

つまり、
誤判別を防ぐには「境界近くにあるデータ」だけで十分
明らかに分かれているデータを考える必要はない。

故に、
境界近くにあるデータ ( サポートベクトル ) のみを用いて分類を行う
サポートベクトル 以外のデータ値が多少変化しても分類に必要な
境界線の位置は一切変わらない。

 

マージン最大化 = 汎化能力が高い
最大マージンの真ん中に引いた線が、最も汎化能力が高いと期待できる。
汎化能力:多くの未学習データの判別が可能になること。

 

 

こちらから。
https://www.sejuku.net/blog/11595
https://logics-of-blue.com/svm-concept/
http://neuro.sfc.keio.ac.jp/~masato/study/SVM/index.htm
http://www.sist.ac.jp/~kanakubo/research/neuro/supportvectormachine.html
https://qiita.com/rennnosuke/items/cd01aa855196340167df#soft_margin

以上。