LoginSignup
6
8

More than 5 years have passed since last update.

サポートベクターマシン(SVM)の概要を数式を使わずに理解する

Posted at

サポートベクターマシン(SVM)とは何か?使うときにはどのような工夫をするのか?
サポートベクターマシンの概要がつかめるように、数式を使わずに説明します。

1. SVMとは?

・SVMとは「教師あり学習」の「分類」の手法の1つです。
・「分類」の中でも、データを2種類に分類する「2クラス分類」の手法です。
 (「多クラス分類」もできなくはないですが、一手間が必要です。)
・「マージン最大化」という考え方で分類します。どういう考え方かというと、
 「境界線⇔データ」の距離(マージン)が最大となるように境界線を引いて分類します。

機械学習の全体像から見たSVM

SVMは、「教師あり学習」の「分類」の手法の1つです。
18.png

SVMの「マージン最大化」のイメージ

「境界線⇔データ」の距離(マージン)が最大となるように境界線を引いて分類します。
19.png

2. SVMにおける手法

SVMを使うときに、うまく分類するための工夫があります。

2.1 ソフトマージン(ノイズデータへの工夫)

目的は?

全てのデータを誤りなく分類できることが理想です。
しかし、実際のデータにはノイズがあり、そうはいきません。
「ソフトマージン」は、ノイズデータに左右されないための工夫です。

どんな工夫なの?

多少の誤分類は許容する、という工夫が「ソフトマージン」です。

効果は?

ノイズデータに左右されにくくなり、分類の精度を高めることができます。
言い換えると、汎化性能を高めることができます。
汎化性能とは、訓練データではなく実際のデータを使ったときに、
どれくらい正しく分類できるかという精度のことです。

「多少の誤分類を許容」の「多少」ってどの程度?

「多少」をどの程度とするか?は、「C」というパラメータで、人が調整します。
「C」が小さいほど、誤分類を許容します。

ハードマージン

誤分類を許容しない場合のことを「ハードマージン」と呼びます。
この場合、パラメータ「C」は無限大です。

ソフトマージンのイメージ

ノイズデータの多少の誤分類は許容します。
20.png

2.2 カーネル法(非線形への工夫)

目的は?

これまでのイメージ図では、直線でデータを分類しました。
しかし、実際には全てのデータを直線(線形)で分類できるわけではありません。
境界線が曲線(非線形)となる場合も実際にはあります。
非線形な境界線に対応するための工夫が「カーネル法」です。

どんな工夫なの?

データを高次元の空間に変換することで、直線(線形)で分類できるようにします。
これを元の空間に戻すと、非線形になります。

カーネル法のイメージ

左の二次元空間では非線形ですが、右の三次元空間に変換すれば線形に分類できるため、
これを元に非線形な境界線を引く、というイメージです。
21.png

カーネルトリック(計算量を削減するための工夫)

データを高次元の空間に変換するということは、変換するための関数が必要ということです。
この変換関数を求めるのは、次元が大きければ大きいほど計算量が膨大になります。
しかし、カーネル関数というものを使えば、この変換関数を求めることなく計算することができます。
よって、計算量を削減することができます。これをカーネルトリックと呼びます。

3. SVMの利点と欠点

SVMの利点

・人が調整するパラメータが少ない点が利点です。

SVMの欠点

・データ量が増えると計算量が膨大になります。
・基本的には2クラス分類の手法です。多クラス分類をするには一手間が必要です。

4. まとめ(私見)

SVMは、データ量が少なくて、2クラス分類をしたいときに向いていると思います。
データ量が多いとか、多クラス分類をしたいときは、
SVMだけではなく、別の手法(ランダムフォレスト等)も試した方が良いと思います。

6
8
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
6
8