サポートベクターマシンとは?わかりやすく解説
サポートベクターマシン(SVM)は、機械学習の代表的なアルゴリズムの一つです。この記事では、SVMの基本的な考え方や仕組み、どのような場面で活用できるのかを、専門用語を極力使わずに、初心者にも理解しやすいように丁寧に解説します。
サポートベクターマシンってなに?
サポートベクターマシン(SVM:Support Vector Machine)は、コンピューターがデータから学習して、新しいデータがどちらのグループに属するかを判断するための 「かしこい仕分け屋さん」 のようなものです。
例えば、手元にたくさんの「リンゴ」と「ミカン」があるとします。見た目(色や形など)の情報をもとに、これがリンゴなのかミカンなのかを自動で分けたいと考えたとき、サポートベクターマシンが役立ちます。たくさんのリンゴとミカンのデータを使って「これがリンゴの特徴だよ」「これがミカンの特徴だよ」とコンピューターに教え込む(学習させる)と、新しい果物を見たときに、それがリンゴなのかミカンなのかを高い精度で判断できるようになります。
このように、あらかじめ与えられたお手本データ(正解が分かっているデータ)を使って学習し、未知のデータを分類したり予測したりする技術の一つがサポートベクターマシンです。主に、データを2つのグループに分ける問題(これを2クラス分類と呼びます)で力を発揮します。
サポートベクターマシンはどうやってデータを分けるの?
サポートベクターマシンがデータを分ける仕組みを、もう少し詳しく見ていきましょう。
先ほどのリンゴとミカンの例えで考えてみます。リンゴとミカンを、それぞれの特徴(例えば「赤っぽさ」と「丸っぽさ」)をグラフの縦軸と横軸にとって、点としてプロットしたと想像してください。リンゴの点はグラフのある領域に、ミカンの点は別の領域に集まるでしょう。
サポートベクターマシンは、このリンゴのグループとミカンのグループの間に、**できるだけ上手な「境界線」**を引こうとします。この境界線が、新しい果物が来たときに、それがリンゴなのかミカンなのかを判断する基準になります。
では、「上手な境界線」とはどのようなものでしょうか? サポートベクターマシンは、それぞれのグループから最も近い点との距離(これを「マージン」と呼びます)が、できるだけ大きくなるような境界線を探します。つまり、リンゴのグループにもミカンのグループにも、できるだけ近づかない、余裕を持った位置に線を引こうとするのです。
なぜなら、境界線がどちらかのグループにギリギリだと、新しいデータが少し特徴が違っただけで、間違ったグループに分類してしまう可能性が高くなるからです。できるだけ真ん中に、余裕をもって境界線を引くことで、未知のデータに対しても正しく分類できる可能性が高まります。この「マージンを最大にする」という考え方が、サポートベクターマシンの大きな特徴です。
「サポートベクター」ってなに?
「サポートベクターマシン」という名前にも含まれている「サポートベクター」とは、この境界線を決めるのに最も重要な役割を果たすデータ点のことを指します。
具体的には、境界線に最も近い位置にある、いくつかのデータ点(リンゴのグループの最も境界線に近いリンゴ数個と、ミカンのグループの最も境界線に近いミカン数個)がサポートベクターです。
イメージとしては、境界線という「仕切り板」を、両側から「支えている杭(くい)」のようなものです。これらのサポートベクターの位置関係によって、最適な境界線の場所が決まります。逆に言えば、サポートベクター以外の、境界線から遠く離れたデータ点は、境界線の決定には直接影響しません。
この「サポートベクター」に着目することで、効率的に最適な境界線を見つけ出すことができるのが、サポートベクターマシンの賢いところです。
サポートベクターマシンの得意なこと
サポートベクターマシンは、どのような問題で特に力を発揮するのでしょうか。
- データを2つのグループに分けるのが得意: 前述の通り、サポートベクターマシンは基本的に2つのグループを分ける問題(2クラス分類)を得意としています。例えば、メールが「迷惑メール」か「通常メール」か、検査結果が「陽性」か「陰性」か、といった分類です。
- データの特徴が多い場合でも比較的うまくいく: 例えば、リンゴとミカンを分けるのに、「色」「形」「大きさ」「重さ」「糖度」…といったように、たくさんの情報(特徴)がある場合でも、サポートベクターマシンは比較的うまく機能します。このような状況を「高次元データに強い」と表現することがあります。
- データが綺麗に一直線で分けられない場合でも工夫次第で対応できる: 必ずしもデータが単純な直線でスパッと分けられるとは限りません。リンゴとミカンの点が複雑に入り組んでいる場合もあります。そのような場合でも、サポートベクターマシンは「カーネル法」という少し高度なテクニックを使うことで、複雑な境界線を見つけ出し、うまく分類できることがあります。これは、データを別の見方(別の空間)で捉え直すことで、直線で分けられるようにするイメージです。
- お手本データが少ない場合でもある程度の性能を発揮しやすい: マージン最大化という考え方により、境界線を決めるのに本当に重要なデータ(サポートベクター)に注目するため、お手本となるデータがそれほど多くなくても、比較的安定した性能を発揮しやすいと言われています。
サポートベクターマシンの苦手なこと・注意点
一方で、サポートベクターマシンにも苦手なことや、利用する上での注意点があります。
- お手本データが非常に大量にあると、計算に時間がかかることがある: サポートベクターマシンは、マージンを最大化する最適な境界線を見つけるために、複雑な計算を行います。そのため、学習させるお手本データの数が非常に多くなると、計算に時間がかかってしまうことがあります。
- 基本的に2つのグループ分けが専門: サポートベクターマシンは、もともと2つのグループを分けるために考えられた方法です。3つ以上のグループに分けたい場合(例えば、「リンゴ」「ミカン」「バナナ」の3種類に分類したい場合)は、そのままでは使えません。ただし、工夫次第で多クラス分類に応用する方法も存在します(例えば、「リンゴかそれ以外か」「ミカンかそれ以外か」といった2クラス分類を組み合わせるなど)。
- データの「前処理」が重要になることがある: 例えば、リンゴの「重さ」はグラム単位で大きな数値になり、一方で「色の鮮やかさ」は1から5の段階評価で小さな数値になる、といったように、データの特徴によって数値の大きさがバラバラな場合があります。このような場合、そのままサポートベクターマシンに入力すると、数値の大きな特徴に結果が引っ張られてしまうことがあります。そのため、あらかじめ各特徴の数値の範囲を揃えるなどの「前処理」と呼ばれる準備作業が重要になることがあります。
- 結果の「なぜ?」が分かりにくい場合がある: サポートベクターマシンは、高い精度で分類できることが多い一方で、なぜそのような境界線が引かれたのか、つまり「なぜこのデータがこちらのグループに分類されたのか」という理由を人間が直感的に理解するのが難しい場合があります。特に複雑なカーネル法を使った場合はその傾向が強まります。
まとめ
今回は、サポートベクターマシンとは何か、その基本的な考え方や仕組み、得意なこと・苦手なことについて、できるだけ専門用語を避けて解説しました。
サポートベクターマシンは、データの中から**「最も区別しやすい境界線」を「余裕(マージン)が最大になるように」見つけ出す**、賢い仕分け屋さんのようなものでした。そして、その境界線を決めるのに重要な役割を果たすのが「サポートベクター」と呼ばれるデータ点でした。
画像認識、文字認識、医療診断の補助、迷惑メールのフィルタリングなど、私たちの身の回りの様々な場面で応用されている技術です。この入門編を通して、サポートベクターマシンのイメージを少しでも掴んでいただけたら幸いです。
図解即戦力 機械学習&ディープラーニングのしくみと技術がこれ1冊でしっかりわかる教科書
エンジニア1年生、機械学習関連企業への就職・転職を考えている人が、機械学習・ディープラーニングの基本と関連する技術、しくみ、開発の基礎知識などを一通り学ぶことのできる、最初の1冊目にふさわしい入門書を目指します。
▶ Amazonで見る関連する記事
k近傍法(k-NN)とは?わかりやすく解説
k近傍法(k-NN)の基本的な考え方や仕組み、メリット・デメリットを初心者にも理解できるように、専門用語を避けて丁寧に解説します。機械学習の第一歩として最適なアルゴリズムです。
ガウス混合モデル(GMM)とは?わかりやすく解説
ガウス混合モデル(GMM)の基本を初心者にも理解できるように、専門用語を避け、図解や具体例を交えながら丁寧に解説します。データ分析や機械学習におけるクラスタリング手法の一つであるGMMの仕組みとメリットを学びましょう。
DQN (Deep Q-Network)とは?わかりやすく解説
「DQNって何?難しそう…」と感じているあなたへ。この記事では、DQNの基本的な考え方や仕組みを、専門用語をできるだけ使わずに、やさしく解説します。AIの学習方法の一つであるDQNについて、その魅力に触れてみましょう。
Q学習とは?わかりやすく解説
Q学習は、AIが試行錯誤しながら最適な行動を学ぶための方法の一つです。この記事では、Q学習の基本的な考え方や仕組みを、専門用語をできるだけ使わずにやさしく解説します。AIの学習方法に興味がある方におすすめです。
SARSAとは?わかりやすく解説
SARSA(サルサ)は、機械学習の一分野である強化学習で使われるアルゴリズムの一つです。この記事では、SARSAの基本的な考え方や仕組み、そしてどのような場面で活用できるのかを、専門用語を極力避け、具体例を交えながら丁寧に解説します。