DXを推進するAIポータルメディア「AIsmiley」| AI製品・サービスの比較・検索サイト
03-6452-4750 10:00〜18:00 年末年始除く
よく検索されているキーワード

サポートベクターマシン(SVM)とは?特徴やメリットと活用事例

最終更新日:2024/02/16

サポートベクターマシン(SVM)は、機械学習における有名なアルゴリズムの1つです。AI技術の発達と浸透が著しい現代、高精度な予測や検出、識別といった用途でサポートベクターマシンが有用であり、業務効率化や生産性の向上にも貢献するでしょう。

この記事では、サポートベクターマシン(SVM)の概要や仕組み、メリットについて詳しく解説します。SVMの活用事例やPython実装時のヒントなど、実用的なポイントも紹介するため、サポートベクターマシンについて理解を深め、システム開発や製品に活かす方法を知りたい方はぜひご覧ください。

機械学習について詳しく知りたい方は以下の記事もご覧ください。
機械学習とは何か?種類や仕組みをわかりやすく簡単に説明

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

サポートベクターマシン(SVM/Support Vector Machine)とは、機械学習モデルの中でも特に有名なアルゴリズムの1種です。機械学習の種類のうち、「教師あり学習」における「分類」のタスクで主に使用されています。少ない教師データを使ってスピーディな計算が可能で、高い汎化性があることなど使い勝手が良いことなどが特徴です。

サポートベクターマシンは、ディープラーニングが浸透する前の2000年〜2010年頃にかけて注目を集めました。現在は、Pythonのライブラリを用いた実装により、幅広いシーンで採用されています。

サポートベクターの意味

サポートベクターマシン(SVM)の「サポートベクター(Support Vector)」とは、「データを分割する直線に最も近いデータ」のことです。SVMでの分類タスクにおいて、サポートベクターは大きな役割を果たしています。

サポートベクターを定めると、分割線などの基準となるデータを明確化することが可能です。基準が決まれば、あとは対象となるデータがどちらにあるかによってクラス分類を予測します。サポートベクターと対象データの距離を最大化し、分類推定の精度を高めることが、SVMの目的の1つといえるでしょう。

機械学習とサポートベクターマシン

AIによる機械学習は、データの種類や状況などに応じて「教師あり学習」「教師なし学習」「強化学習」という3つに分けられます。サポートベクターマシンは、機械学習の「教師あり学習(教師データを学習させてから、認識・予測を行う手法)」のうち、「分類」での使用が主流です。

特に、2つの選択肢を用いる2値分類はサポートベクターマシンの得意分野の1つで、2値分類のアルゴリズムを複数並べた多値分類にも対応しています。分類に比べると頻度は少ないものの、教師あり学習の「回帰(数値の予測)」へも応用可能で、サポートベクターレグレッション(SVR)という手法がその代表例です。

サポートベクターマシン(SVM)の特徴

サポートベクターマシン(SVM)の特徴や仕組みを理解するために、「マージン最大化」と「カーネル法」という2つの手法について解説します。上記2つは、サポートベクターマシンが優秀な分類タスクを実行する上で肝となる重要なポイントです。

マージン最大化とは

サポートベクターマシン(SVM)が高精度でクラス分類などのタスクを実行するために、「マージン最大化」と呼ばれる考え方を用いています。「マージン」とは、クラスの分類基準となる境界と、各データとの距離のことです。

「マージン最大化」は、このマージンを最大化すること、つまり2つのサポートベクトルから最も遠い位置に境界線を設定することを意味します。マージンが小さい場合、データが少し変動するだけで境界を超えてしまうため、分類結果が変わりやすく、誤判定のリスクが出てくるでしょう。

そこでSVMでは、マージンが最大となる境界線を引き、2つのクラス両方ともから離れているデータの正しい分類を目指します。マージン最大化により、SVMは深層学習(ディープラーニング)で使用されるニューラルネットワークよりも少ないデータで、高い汎用性を出すことが可能です。

カーネル法とは

サポートベクターマシン(SVM)のもう1つの重要な要素である「カーネル法」は、クラスの境界線が直線では表せない「非線形データ」を分類する手法です。非線形の特徴量をデータ表現に加えることで次元を増やせるため、高精度な分類を実行できます。

上と下、右と左というように直線的な境界線で分類できるデータの場合は、先述した「マージン最大化」を用いることで効率的に分類可能です。とはいえ、実際の現場ではシンプルなデータばかりではなく、AというデータがBというデータを囲むドーナツ状などのケースも考えられます。

そこで、2次元(平面)データを3次元などの高次元空間へと拡張し、平面でしか表現できなかったデータを立体的に表現することで「平面による分離」を追加するのです。一般的な次元拡張では計算量が膨大かつ複雑になりがちですが、カーネル法では困難な計算を回避してタスクを実行できます。

以上のように、マージン最大化とカーネル法の両立により、クラス分類を強化するというのがSVMの基本的な考え方です。

サポートベクターマシン(SVM)のメリット

サポートベクターマシン(SVM)は使いやすいアルゴリズムのため、さまざまなシーンで活用されています。ここでは、サポートベクターマシン(SVM)が持つ「過学習が起こりにくい」」「データの次元が大きくなっても識別精度が高い」という2つのメリットについて見ていきましょう。

過学習が起こりにくい

サポートベクターマシンは、少ない教師データで高い汎化性を持てるため、過学習が起こりにくい点が特徴です。先述のマージンは、ある程度分類ができればOKという「ソフトマージン」と、完璧に分類する「ハードマージン」の2種類に分けられます。

サポートベクターマシンが持つ「マージン最大化」における考え方として、完全にすべての学習データを分類するモデルは目指していません。そのため、「100%完璧にすべてのデータを分類できなくてもいい」といったソフトマージンが多く見られます。

他の機械学習手法では、完璧な分類を目指すために学習データに対して過度にフィットさせようとした結果、過学習と呼ばれる現象が起きてしまうのです。過学習により新しいデータの予測精度が悪化してしまうため、機械学習が適切に実行できなくなります。

一方、SVMは「マージン最大化を行うこと」が目的のため、過学習のリスクが少なく、誤検知を出しにくい点がメリットです。

データの次元が大きくなっても識別精度が良い

サポートベクターマシンで非線形データを分類する場合、カーネル法によってデータの次元を増やします。低次元では識別できなかったようなデータも、高次元になると高精度で分類できるため、高い識別精度を維持することが可能です。

SVMの知名度を高めた大きな要因は、このカーネル法による識別精度の高さが挙げられます。

サポートベクターマシン(SVM)のデメリット

サポートベクターマシン(SVM)には複数のメリットがありますが、デメリットがない訳ではありません。ここでは、サポートベクターマシンで考えられる「学習データが増えると計算量が膨大になる」「スケーリングが必要になる」という2つのデメリットについて解説します。

学習データが増えると計算量が膨大になる

サポートベクターマシンでは、学習データが増えることで計算量が膨大になり、学習が非効率化する可能性があります。実際の現場では、直線的な境界を持つ線形データのように単純に分類できるケースよりも、偏りやばらつきが見られる非線形データの方が圧倒的に多い傾向です。

より多くの特徴を学習させることで、サポートベクターマシンの計算量が指数関数的に増えるため、結果負担が大きくなってしまいます。目安として、10万を超えるサンプルを持つような大規模なデータよりも、中小規模のデータに向いているでしょう。

スケーリングが必要になる

サポートベクターマシンは、特徴量のスケールの影響を強く受けやすいため、データそのままを分類すると上手く結果が出ない可能性があります。そこで、データの細かなスケーリングが有用とされますが、作業の手間がかかるでしょう。

「スケーリング」とは、AIなどの統計や機械学習で使うデータ分析の前処理の1つで、複数の異なる特徴量を特定の基準に沿って変換し、尺度を統一することです。スケーリングは、カーネル法においては特に重要となる段取りで、スケーリングなしで計算すると、「0と10,000」というように大幅に差がある数値を扱うこととなり、正常に処理されないリスクが高まります。

サポートベクターマシン(SVM)の活用事例

ここからは、サポートベクターマシン(SVM)の活用事例を紹介します。サポートベクターマシーン(SVM)は、2値分類など二者択一の予測を中心に応用可能です。

株価の予測

サポートベクターマシーンが得意とする2分類の線形識別を株式市場に応用することで、株価の予測が可能です。日経平均や企業の株価の変動データを学習させ、前日よりも株価が上がるか下がるか予測できます。

学習に用いるデータは多い方が予測結果の精度が高まるので、200日以上など多くのデータを収集できると理想的でしょう。

災害の予測

株価と同様の考え方で、サポートベクターマシンを災害予測に活用することも可能です。土地の傾斜角度や地質、降水量、降雨時間などのデータを学習させ、大雨による土砂崩れが起きやすいパターンを検出できます。災害リスクの高い場所をピンポイントで特定し、必要な対策を講じることが可能です。

また、不動産の価格予測にもサポートベクターマシンが役立ちます。立地条件や築年数などのデータから、未知の不動産が一定価格より上がるか下がるかを予測可能です。

異常検知

製造工場での製品異常やクレジットカードの不正取引といった異常検知にも、サポートベクターマシンが有用です。一般的なサポートベクターマシンの応用でも可能ですが、正解データを用いない「教師なし学習への1クラス分類」を使った方法もあります。

まず、正常データを1クラスとして学習させ、識別の境界を決定。その後、境界からのマージン(距離)を検出することで、正常ではない=異常データを検出します。

数値の認識

サポートベクターマシンを使うことで、手書き画像の数値を認識させることも可能です。0〜9の10文字を、サポートベクターマシンの多値分類に拡張し識別させます。

手書きされた各数字の画像をそれぞれの数字データとして分けられるため、アンケート結果の集計や郵便番号の認識などで役立つでしょう。

顔検出

私たちの日常生活にすでに浸透している顔検出技術にも、サポートベクターマシンが活用されています。数字認識と同じような仕組みで、画像のピクセルの値を判断し、その画像に顔が含まれているかどうかを識別することが可能です。

さらに、性別や個人の顔画像などのカテゴリを事前設定しておくことで、顔が含まれている場合にどのカテゴリの誰であるかといった判別にも使えます。入退社管理や犯人特定といった用途にも応用できるでしょう。

テキストの分類

サポートベクターマシンは、テキストや文章を、あらかじめ登録されたカテゴリに分類する用途にも役立ちます。特定の単語やフレーズを学習させておき、そのデータに含まれているかどうかを分類することで、スパムメールの検出などの用途に有用です。

機械学習で文章を扱う場合、文章を単語やフレーズごとに分割し、それぞれに数字を割り当てたデータに変換してから扱います。

サポートベクターマシン(SVM)を活用するポイント

サポートベクターマシン(SVM)の実装には、AI分野で主に用いられるPythonのライブラリ「Scikit-learn(サイキット・ラーン)」を使います。

Scikit-learnはオープンソースで公開されており、誰でも無料で利用可能です。また、サポートベクターマシンを含む「教師あり・教師なし学習」に関するアルゴリズムが一通り使える上、サンプルのデータセットが充実しています。

サポートベクターマシンを活用するにあたって、どういった分類予測に活用するかが重要です。特徴量が比較的多く、複雑な場合はカーネル法が有用ですが、使わなくて済むケースもあります。見極めを誤ってカーネル法を使ってしまうと、過学習により予測精度が低下する可能性があるため注意しましょう。

サポートベクターマシン(SVM)を実装してみよう

サポートベクターマシン(SVM)は、機械学習で多く用いられるアルゴリズムの1つで、教師あり学習の中でも分類に強みがあります。マージン最大化やカーネル法という2つの特徴により、少ないデータでも高い汎用性を実現可能です。

二者択一のタスクをベースとした株価や不動産価格、災害における予測や、数値や顔、テキストの認識・分類といった用途で応用されています。Pythonのライブラリ「Scikit-learn」を使って、中小規模のデータセットの分類タスクに適したサポートベクターマシンを実装し、現場に活かしていきましょう。

AIについて詳しく知りたい方は以下の記事もご覧ください。
AI・人工知能とは?定義・歴史・種類・仕組みから事例まで徹底解説

AIsmiley編集部

株式会社アイスマイリーが運営するAIポータルメディア「AIsmiley」は、AIの専門家によるコンテンツ配信とプロダクト紹介を行うWebメディアです。AI資格を保有した編集部がDX推進の事例や人工知能ソリューションの活用方法、ニュース、トレンド情報を発信しています。

・Facebookでも発信しています
@AIsmiley.inc
・Xもフォローください
@AIsmiley_inc

DXトレンドマガジン メールマガジン登録

業務の課題解決に繋がる最新DX・情報をお届けいたします。
メールマガジンの配信をご希望の方は、下記フォームよりご登録ください。登録無料です。

お名前 - 姓

姓を入力してください

お名前 - 名

名を入力してください

メールアドレス

メールアドレスを入力してください

AI・人工知能記事カテゴリ一覧

今注目のカテゴリー

ChatGPT連携サービス

チャットボット

画像認識・画像解析

需要予測

ChatGPT連携サービス

チャットボット

画像認識・画像解析

需要予測

AI活用のご相談したい企業様はこちら

03-6452-4750

AI製品・ソリューションの掲載を
希望される企業様はこちら