LoginSignup
16
23

More than 5 years have passed since last update.

機械学習① SVM (Support Vector Machine) まとめ

Last updated at Posted at 2017-05-08

Support Vector Machine のまとめ

What is SVM ?

SVM は一言で言うと、データを2つに分ける線を引く、教師ありでの機械学習モデルです。
この時に優先事項があります。

  1. データを正確に group 分けする。(異常値outlierは別)
  2. 線と点との差である Margin を最大化する。

default のコード


from sklearn.svm import SVC

SVC(C=1.0, kernel='rbf', degree=3, gamma='auto', coef0=0.0, shrinking=True, 
probability=False, tol=0.001, cache_size=200, class_weight=None, 
verbose=False, max_iter=-1, decision_function_shape=None, random_state=None)

SVM 内の Parameter の説明

  • C

Cは、誤分類をどの程度許容するかを決めるパラメータ。Cの値を大きくすれば大きくするほど、データの分類をより正確にしようとする。つまり、より複雑な線になりやすい。大きくしすぎると、過学習の状態になってしまうので、注意。

Screen Shot 2017-05-08 at 13.26.27.png
According to the 'Introduction to Machine Learning' from Udacity

  • kernel
    基本的に使うのは、線形カーネルの Linear と、 非線形カーネルの rbf の二種類。ちなみに、 Linear にすると直線で、データを分け、 rbf にすると、より曲線的で、複雑な線でデータを分ける。

  • gamma
    これは、線に近い方の点か線から遠い方の点、どちらを重要視するかを決める。つまり、値を大きくすると、近くの点との margin を重要視して、その結果、線は複雑になる。

Screen Shot 2017-05-08 at 13.31.00.png
According to the 'Introduction to Machine Learning' from Udacity

反対に、小さくすると、遠くの点との margin を重要視するようになるので、線はある程度シンプルになる。

Screen Shot 2017-05-08 at 13.32.35.png
According to the 'Introduction to Machine Learning' from Udacity

SVM の 良い点悪い点。

  • 良い点
    最適化すべきパラメータが少ない。
    データの特徴量が高次元になっても、対応できる。

  • 悪い点
    データにノイズが含まれている場合(上記の図で言えば、少数のマルが、バツの領域に存在していたり、少数のバツがマルの領域に存在していたり)、そして、データがオーバラップしている場合(上記の図で言うと、真ん中の線を引くべきところで、多くのマルとバツが混在している場合)していると、データが綺麗に分類されずらい。

まとめ

以上が現在筆者のわかる範囲での SVM の概要です。
日々更新していきますので、追加すべきところ、直すべきところありましたら、コメントいただけると幸いです。

16
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
23