AI総合研究所

SHARE

X(twiiter)にポストFacebookに投稿はてなブックマークに登録URLをコピー

サポートベクターマシン(SVM)とは?その種類や利点、実装方法を解説

この記事のポイント

  • 少データ・高次元・線形分離が有効なタスクで有力候補になる古典的な機械学習アルゴリズム
  • カーネル選択とC・γの調整でモデル性能が大きく変わり、多くのケースでStandardScaler等の前処理とPipeline運用が強く推奨
  • 学習時間がサンプル数に対して二次以上でスケールするため、数万サンプルを超える場合はLinearSVCやGPU実装(RAPIDS cuML)も並行して比較する
  • 表形式データの主戦場はXGBoost/LightGBM/CatBoostに移行済で、SVMは高次元スパース・小データで棲み分ける立場
  • LLM時代は埋め込みベクトル上に載せる軽量分類器の候補としてSVMも取り上げられる立場になっている
坂本 将磨

監修者プロフィール

坂本 将磨

XでフォローフォローするMicrosoftMVP

Microsoft MVP・AIパートナー。LinkX Japan株式会社 代表取締役。東京工業大学大学院にて自然言語処理・金融工学を研究。NHK放送技術研究所でAI・ブロックチェーンの研究開発に従事し、国際学会・ジャーナルでの発表多数。経営情報学会 優秀賞受賞。シンガポールでWeb3企業を創業後、現在は企業向けAI導入・DX推進を支援。

サポートベクターマシン(SVM)は、クラスを分ける超平面のうちマージンが最大になる境界を選ぶ、教師あり学習の代表的な分類・回帰アルゴリズムです。

深層学習と勾配ブースティングが主流となった2026年でも、少データ・高次元・線形分離が有効なタスクなどでは有力な選択肢の1つとして残っており、LLM埋め込みベクトル上の軽量分類器の候補としても取り上げられます。

本記事では、SVMの仕組み・種類・使い分け・scikit-learn実装・GPU加速・活用領域までを2026年7月時点の一次情報で体系的に整理します。

目次

サポートベクターマシン(SVM)とは?マージン最大化で境界を引く分類器

LLM時代におけるSVMの立ち位置

SVMの仕組み——マージン最大化とカーネルトリック

マージンとサポートベクター

ハードマージンとソフトマージン

カーネルトリックの直感

代表的な4つのカーネル

SVMの主な種類——分類・回帰・異常検知の3系統

分類系のクラス——SVC・NuSVC・LinearSVC

回帰系のクラス——SVR・NuSVR・LinearSVR

異常検知系——OneClassSVM

SVMの強みと限界——少データで強く、大規模で詰まる理由

少データ・高次元で強い理由

過学習に強い理由

学習時間がO(n²)以上でスケールしにくい

マルチクラス分類の内部処理

SVMと他アルゴリズムの使い分け——XGBoost・深層学習・ロジスティック回帰との棲み分け

勾配ブースティング系との棲み分け

深層学習との違い

ロジスティック回帰との違い

実務で選ぶ判断軸

scikit-learnでのSVM実装——最小コードとハイパーパラメータ設計

最小実装コード(irisデータセット)

C・γ・カーネルの調整の勘所

前処理でスケーリングが強く推奨される理由

マルチクラス(OVO/OVR)と確率出力の扱い

SVMの学習時間ネックとGPU加速(RAPIDS cuML)の現在地

なぜ数万サンプル超で遅くなるか

CPU側の3つの回避策

GPUで動かす——RAPIDS cuML

SVMの活用領域——医療画像分類からLLM時代のゲート分類器まで

医療画像分類——乳がん・肺がん・脳腫瘍MRI

スパム・不正検知——長期運用に耐える古典

LLM時代の埋め込みゲート・ルーター

SVMのようなアルゴリズム選定力を業務Agent戦略に発展させるなら

まとめ

サポートベクターマシン(SVM)とは?マージン最大化で境界を引く分類器

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

サポートベクターマシン(Support Vector Machine:SVM)とは、教師あり学習における分類・回帰の代表的なアルゴリズムです。

クラスを分ける無数の境界(超平面)のうち、両クラスから最も距離が離れた「マージンが最大になる境界」を選ぶ設計思想を持ち、境界に最も近いデータ点だけが最終モデルを規定するため、その点を「サポートベクター」と呼びます。


線形分離できないデータに対してはカーネル関数で高次元へ写像し、写像先の空間で線形分離を実現する「カーネルトリック」が使えるため、非線形な決定境界も自然に扱えます。

1990年代にVapnikらが理論を体系化した古典的手法として広く知られており、機械学習の代表的な手法の1つに位置づけられています。

LLM時代におけるSVMの立ち位置

深層学習と大規模言語モデル(LLM)が主戦場を占める2026年時点でも、SVMは「消えた古典」ではなく「役割が変わったベースライン」**として実務に残っています。

  • 表形式データの本命譲渡:XGBoost・LightGBM・CatBoost等の勾配ブースティングに主戦場を譲った
  • 残った適所:「少データ×高次元」「線形分離が有効なテキスト分類」「決定境界の解釈性が欲しい」条件で有力
  • LLM時代の新たな役割:LLM埋め込みベクトル(256〜3072次元)上の軽量分類器として、意図分類・コンテンツルーティング・安全性ゲートに採用


ここでのポイントは、SVMは汎用ベースラインから退いた一方、埋め込みベクトル上の軽量ゲート分類器としてLLM時代のスタックに再配置されている、という点です。

具体的な採用パターンは後段の「SVMの活用領域」で扱い、まずは仕組み・種類・強みと限界を順に整理します。

AI Agent Hub1


SVMの仕組み——マージン最大化とカーネルトリック

SVMの仕組み

SVMを支える中核アイデアは、「マージン最大化」と「カーネルトリック」の2つに集約されます。この2つを掴んでおくと、後段で扱うC・γ・カーネル選定の議論が全て地続きに読めます。

本セクションでは、マージンとサポートベクターの関係、ハードマージンとソフトマージンの違い、カーネルトリックの直感、そしてscikit-learnで選べる代表的な4つのカーネルを順に整理します。

マージンとサポートベクター

マージンとサポートベクター

SVMは、クラスを分ける超平面のうち、両クラスに属する最も近いデータ点までの距離(=マージン)が最大になる境界を選びます。

このマージンを規定する「境界に最も近いデータ点」だけが、学習後のモデルパラメータに影響します。それ以外の遠い点は学習が終わればモデル計算に登場しません。この選ばれた少数の点をサポートベクターと呼び、SVMの名前の由来にもなっています。

結果として、学習データ全体を保持する必要がなく、サポートベクターのぶんだけを保持しておけば予測できるため、モデルサイズがコンパクトになりやすい特性があります。

ハードマージンとソフトマージン

ハードマージンとソフトマージン

理想的にはマージンの内側にデータ点が入らない「ハードマージン」で境界を引きたいところですが、実データはノイズや外れ値を含むため、そのままでは解が存在しない場合が大半です。

そこでSVMは、マージン内側への侵入・誤分類をある程度許容する「ソフトマージン」を採用します。侵入をどれくらい許すかを決めるのが正則化パラメータCで、Cが大きいほど誤分類に厳しく(マージン狭め)、小さいほど寛容(マージン広め)になります。

Cの選定は過学習・未学習のバランスを直接動かす重要なポイントで、後述のscikit-learn実装ではグリッドサーチで最適値を探すのが基本ワークフローになります。

カーネルトリックの直感

カーネルトリックの直感

線形分離できないデータに対してSVMが強い理由が、このカーネルトリックです。

素朴には、元の低次元空間でぐにゃぐにゃに絡まったデータを、より高次元の空間に射影すれば線形分離できる可能性が高まります。しかし射影後の高次元ベクトルを実際に計算・保持するとメモリと計算量が爆発します。

カーネル関数は、射影後の空間で内積を取る作業を「元空間の関数呼び出しだけで代替する」トリックです。データ点の座標そのものを高次元に持ち上げなくても、分離に必要な情報(内積)だけを効率的に得られるため、計算量を抑えたまま非線形分離を実現できます。

代表的な4つのカーネル

代表的な4つのカーネル

scikit-learnが公式に提供するカーネルは4種類で、実務ではまずRBFから試すのが定石です。

以下の表で、4種類のカーネルの用途と選び方の目安を整理しました。表の下で各カーネルを実務目線で読み解きます。

カーネル 数式のイメージ 主な用途 選び方の目安
linear(線形) K(x, x') = x・x' 高次元スパースデータ、テキスト分類 特徴量数がサンプル数より大きい場合に有力
rbf(放射基底関数) K(x, x') = exp(-γ‖x-x'‖²) 非線形な決定境界全般 どのカーネルを選ぶか迷ったらまずこれ(scikit-learnデフォルト)
poly(多項式) K(x, x') = (γx・x' + r)^d 特徴間の交互作用を明示的に取り込みたい場合 degreeを大きくしすぎると過学習・計算重
sigmoid K(x, x') = tanh(γx・x' + r) ニューラルネット的な振る舞いを模倣したい場合 実務では選ばれる場面が少ない


scikit-learn公式ドキュメントでも、SVCのデフォルトカーネルはRBFに設定されています。RBFはガンマ(γ)というスケールパラメータ1つで局所性を調整でき、非線形性の強度を後から調整しやすい点が採用理由の中心です。

線形カーネルは、テキスト分類のように「特徴量が数万次元・非ゼロが疎ら」というスパース高次元データに強く、後述のLinearSVCで実装すればRBFより桁違いに速く学習できます。多項式カーネルは特徴間の交互作用を明示的にモデル化したいときに使いますが、degreeを大きくすると計算コストと過学習リスクが跳ね上がります。

シグモイドは理論的な興味以上に実務で選ばれる場面は少ないため、選択肢としては「あることを知っておく」レベルで十分です。

scikit-learn公式のirisデータセットにおけるカーネル別の分類境界
irisデータセット(sepal length × sepal width)に対するSVCのカーネル別の分類境界(出典:scikit-learn Plot different SVM classifiers

4つのプロットを見比べると、linearとLinearSVCは直線的な境界を引くのに対し、RBFは曲線的な境界を引いてクラス間の入り組んだ領域まで追随している点が視覚的に確認できます。多項式(degree 3)は境界の曲率がRBFより粗く、パラメータによって挙動が大きく変わる様子が読み取れます。


SVMの主な種類——分類・回帰・異常検知の3系統

SVMの主な種類

SVMは「分類器」というイメージが強いですが、実際には分類・回帰・異常検知の3系統で複数のモデルクラスが提供されています。目的に合わせて正しいクラスを選ぶことが、実装で最初に間違えやすいポイントです。

本セクションでは、scikit-learnが公式に提供する7つのSVMクラスを、分類・回帰・異常検知の3系統に整理して用途と選び方を示します。

分類系のクラス——SVC・NuSVC・LinearSVC

分類系のクラス

2値分類・多クラス分類には、以下の3クラスが用意されています。

  • SVC(C-SVC)
    最も一般的な分類SVM。libsvmベースで、線形・RBF・多項式・シグモイドの全カーネルに対応。SVM系を試す際の出発点になりやすい

  • NuSVC
    SVCとほぼ同じアルゴリズムだが、正則化パラメータをCではなくν(0〜1)で指定する派生型。ν は「マージン誤り率の上限」かつ「サポートベクター比率の下限」を与えるパラメータで、Cより意味が直感的なため、モデル挙動を解釈的に扱いたい場合に有効(NuSVC公式API

  • LinearSVC
    線形カーネル専用の高速実装(liblinearベース)。学習がほぼ線形時間で進むため、数万〜数百万サンプル規模のテキスト分類・スパース特徴量に強い

多クラス分類の内部処理は3クラスで異なります。SVC・NuSVCは全クラスペアで二値分類器を作る「One-vs-One(OVO)」戦略で、クラス数nに対してn(n-1)/2個の分類器を訓練します。LinearSVCは「各クラス vs 残り全部」の分類器を作る「One-vs-Rest(OVR)」戦略で、n個の分類器で済むぶん学習が高速です。

回帰系のクラス——SVR・NuSVR・LinearSVR

回帰系のクラス

連続値を予測する回帰タスクには、分類系と対になる3クラスが提供されています。

  • SVR
    分類のSVCに対応する回帰版。予測値と真値の差がε(イプシロン)以内なら「合格」とみなし、はみ出した点の合計を最小化する

  • NuSVR
    SVRの派生で、SVRのε(誤差許容幅)の代わりにνを指定する版。CはNuSVRにも別途存在し、νはサポートベクター比率と誤り率のトレードオフを直接指定する役割になる(NuSVR公式API

  • LinearSVR
    線形カーネル専用の高速回帰実装。大規模データ・スパース特徴量での回帰に向く

SVR系は「ε-tube」という考え方で、真値の周辺にε幅のチューブを設け、そこに収まる予測は誤差ゼロと見なします。この設計により外れ値の影響が最小二乗法より抑えられ、ノイズがやや強いデータでも安定した回帰モデルになりやすい特性があります。

異常検知系——OneClassSVM

異常検知系

異常検知・外れ値検出には、専用のOneClassSVMが提供されています。

正常データのみを与えて学習し、そこから外れる点を「異常」として検出する教師なしに近い形式の学習を行います。ラベル付きの異常サンプルが集めにくい現場(機械故障予兆・不正取引・侵入検知など)で採用されます。

分類のSVCとは目的関数が異なり、「原点から離れた側に正常データを囲い込む超平面」を学習する定式化になっています。産業応用では、後段で扱う画像認識や信号監視の前処理としても組み込まれるケースがあります。


SVMの強みと限界——少データで強く、大規模で詰まる理由

SVMの強みと限界

SVMは万能ではなく、はっきりした得意ゾーンと苦手ゾーンを持つ手法です。強みと限界を対で押さえておくと、「SVMを選ぶかランダムフォレストにするか勾配ブースティングにするか」の判断が現場で瞬時にできるようになります。

本セクションでは、SVMがなぜ少データ・高次元で強いのか、なぜ過学習に強いのか、逆になぜ大規模データで詰まるのか、そしてマルチクラス分類でどんな面倒が生じるかを順に整理します。

少データ・高次元で強い理由

少データ・高次元で強い理由

SVMが小データで強い最大の理由は、決定境界の形状を「サポートベクターだけ」で規定する構造にあります。

数万件のニューラルネット向けデータが集まらない場面でも、数百件程度のクリーンなデータでもマージンを最大化する境界を評価すること自体は可能です。特に特徴量数がサンプル数を上回るような高次元スパースデータ(テキスト・遺伝子発現量など)では、SVMが安定した性能を示す例が多く報告されています。

このため、テキスト分類・バイオインフォマティクス・医療画像といった「サンプル数が数百〜数万・特徴量が数千〜数万」の領域で、SVMは長年ベースラインとして扱われてきました。

過学習に強い理由

過学習に強い理由

SVMがマージンを最大化する設計は、そのまま汎化性能への理論的裏付けを持ちます。

マージンを大きく取るほど、未知データが境界の反対側に落ちる余地が狭まるため、訓練データへの過適合を抑えつつ未知データへの予測誤差を小さくできる、というのがVapnikのSRM(構造的リスク最小化)に基づく解釈です。実務上も、決定木を単体で使う場合と比較して、ハイパーパラメータCとγを適切に調整すれば設計次第で過学習を抑えやすい場合があります(過学習の起きやすさは決定木の深さや枝刈り設定にも依存するため、常にSVMが有利とは限りません)。

ただし「過学習に強い」は正則化パラメータの調整前提の話で、Cを極端に大きくすればRBFカーネルでも簡単に過学習します。過学習の抑制は自動ではなく、交差検証を用いたハイパーパラメータ探索でCとγを適切に調整することで実現します(GridSearchCVのほかRandomizedSearchCV・HalvingRandomSearchCVなどが使えます)。

学習時間がO(n²)以上でスケールしにくい

学習時間がスケールしにくい

SVMの最大の弱点は、学習時間がサンプル数に対して二次以上でスケールする点です。

scikit-learnのSVC公式ドキュメントは「fit time scales at least quadratically with the number of samples and may be impractical beyond tens of thousands of samples(学習時間はサンプル数に対して少なくとも二次でスケールし、数万サンプルを超えると実用的でない可能性がある)」と明記しています(SVC公式ドキュメント)。

libsvmベースのCPU版SVCは、数万サンプルを超えると実用的でなくなる場合があります。実時間は特徴量数・カーネル種別・cache_size・ハードウェアなどの条件によって大きく変わるため、大規模データを扱う際はまず小規模サンプルで学習時間を測って全体を見積もるのが実務的です。この制約への対処は、後段の「SVMの学習時間ネックとGPU加速」セクションで詳しく扱います。

マルチクラス分類の内部処理

マルチクラス分類の内部処理

SVMは本質的に2値分類器のため、多クラス分類では複数の2値分類器を組み合わせて実現します。

SVC・NuSVCが採用するOVO戦略は、n(n-1)/2個の分類器を訓練します。10クラス分類なら45個の分類器が内部で動きます。分類器数はクラス数に対して二次で増える一方、各分類器は関係する2クラス分のデータのみを学習するため、1つあたりの学習は軽くなります。

LinearSVCが採用するOVR戦略は、n個の分類器で済みます。10クラスなら10個、100クラスでも100個で、分類器数はクラス数と同数です。ただし各分類器は「あるクラス vs 残り全部」を学習するため、クラス不均衡が実質的に発生する点には注意が必要です。

AI研修


SVMと他アルゴリズムの使い分け——XGBoost・深層学習・ロジスティック回帰との棲み分け

SVMと他アルゴリズムの使い分け

「今SVMを選ぶべきか、それとも他の手法を選ぶべきか」は、現場で最も判断が難しい問いです。2020年代の機械学習ランドスケープは、勾配ブースティングと深層学習が主戦場を占め、SVMは残りの隙間で強みを発揮する形に整理されつつあります。

本セクションでは、XGBoost・深層学習・ロジスティック回帰の3つとSVMを対比し、どの条件でSVMを有力な選択肢に入れるかを実務目線で整理します。

勾配ブースティング系との棲み分け

勾配ブースティング系との棲み分け

表形式データの主戦場は、2020年代を通して勾配ブースティング系(XGBoost・LightGBM・CatBoost)に大きく移行しました。
中〜大規模な表形式データでは、勾配ブースティングが有力候補として選ばれる場面が多くなっています(100超データセットにわたる比較研究)。特徴量に欠損があっても扱える、カテゴリ変数を直接扱える、非線形性・交互作用を自動で学習する、といった実務上の使い勝手がSVMより有利になりやすいためです。

さらに2025〜2026年にかけては、表形式データ向けの基盤モデルが第三の選択肢として登場しています。

TabPFN(Nature 2025年1月公開)は1万サンプル・500特徴量以下の範囲でSVMや勾配ブースティングと競合する性能を示し、Google ResearchのTabFMは700〜15万サンプル規模まで含めた評価で結果を報告しています。

「小データならSVM、大規模ならXGBoost」の二択に、Tabular Foundation Modelという候補が加わりつつある段階です。

そのなかでも、SVMが依然として有力な選択肢になりやすいのは以下の条件が揃った時です。

  • サンプル数が数百〜数千と少ない
    勾配ブースティングは決定木を多数積み上げるため、極端に少ないデータでは過学習しやすい

  • 特徴量数がサンプル数を上回る高次元スパースデータ
    テキスト分類・遺伝子発現量・化合物指紋データなど。LinearSVCが有力候補になりやすい

  • 決定境界が滑らかで、明確な幾何的分離がある
    勾配ブースティングの階段状の境界に対して、SVMの滑らかな境界が有利になる場合がある

この3条件のいずれかに当てはまるなら、SVMを比較候補に入れる価値があります。逆に「サンプル数が数万件以上ある表形式データ」であればXGBoost/LightGBMを有力候補として先に評価するのが実務的です。

深層学習との違い

深層学習との違い

深層学習(ディープラーニング)は、画像・音声・自然言語のような非構造データで人間を超える精度を出せる領域を築きました。

この結果、SVMが1990〜2000年代に担っていた画像分類・音声認識のポジションは、CNNやTransformer系のモデルに置き換わりました。

ただし深層学習が主流になった非構造データ領域でも、SVMは「学習済みモデルが出力する特徴ベクトルの上に載せる軽量分類器」として役割を残しています。

GPUリソースを大量に必要とせず、少ラベルデータで安定した分類器を作れるためです。

深層学習が有力になる典型条件は「サンプル数が数十万〜数百万」「非構造データが中心」「GPUリソースが確保できる」あたりで、この帯を外れる場面ではSVM・勾配ブースティング・Tabular Foundation Modelなどを比較検討する余地があります。

ロジスティック回帰との違い

ロジスティック回帰との違い

ロジスティック回帰は、SVMと同じく線形分離を基本とする手法で、テキスト分類など高次元スパースデータで比較されやすい相手です。

大きな違いは3点あります。

  • 出力の性質
    ロジスティック回帰は確率を直接出力する。SVMは決定境界からの距離を出すため、確率的解釈にはCalibratedClassifierCVによる後処理が必要

  • 決定境界の性質
    ロジスティック回帰は全データから境界を決める。SVMはサポートベクターのみで境界を決めるが、外れ値そのものがサポートベクターになりうる。外れ値耐性はC・γの調整に依存する

  • 非線形性への対応
    ロジスティック回帰は特徴量を人手で加工しないと非線形境界を作れない。SVMはカーネルトリックで非線形性を自動的に扱える

「確率が直接欲しい」「解釈性を最優先」ならロジスティック回帰、「非線形境界を扱いたい」「特徴量数が多くマージンベースが有効そう」ならSVMという棲み分けが目安になります。

実務で選ぶ判断軸

実務で選ぶ判断軸

上記3つの比較を踏まえた、実務でのおおまかな出発点を整理します。

ただし最終選定は必ずクロスバリデーションで複数モデルを実測比較したうえで決めてください。

  • サンプル数が数万〜数百万件・表形式データが中心 → XGBoost / LightGBM が有力
  • サンプル数が数百万件超・非構造データ・GPUあり → 深層学習 が有力
  • サンプル数が数百〜数万件・高次元スパース・線形〜滑らかな境界 → SVM が候補に入りやすい
  • 出力に確率が必要・解釈性最優先・線形分離で十分 → ロジスティック回帰 が候補
  • 1万件未満の表形式データで別モデルの上振れを狙いたい → TabPFN / TabFM も候補
  • どれか判断がつかない → まずランダムフォレストをベースラインに置き、上記の候補と比較


AI導入プロジェクトの現場でも、いきなり手法を1つに絞らず、ランダムフォレスト・SVM・勾配ブースティングを同一パイプラインで比較し、少データ・高次元スパース・低レイテンシー要件が見えた場面でLinearSVCなどの線形SVMを本命候補に据える、という進め方のほうが後戻りが少なくなります。


scikit-learnでのSVM実装——最小コードとハイパーパラメータ設計

scikit-learnでのSVM実装

SVMを実際にPythonで動かす場合、事実上のデファクトスタンダードはscikit-learnです。

ライブラリの中でSVM系のクラスはsklearn.svmモジュールにまとまっており、数行のコードで学習・予測まで到達できます。

本セクションでは、最小の実装コード、ハイパーパラメータC・γ・カーネルの調整の勘所、前処理としてスケーリング+Pipeline運用がなぜ強く推奨されるか、そしてマルチクラス分類と確率出力の実務的な扱いを順に示します。

最小実装コード(irisデータセット)

最小実装コード

まずは3行に近いレベルの最小コードから始めます。

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import make_pipeline
from sklearn.svm import SVC

X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)

clf = make_pipeline(StandardScaler(), SVC(kernel='rbf', C=1.0, gamma='scale'))
clf.fit(X_train, y_train)
print(clf.score(X_test, y_test))

このコードで、irisデータセット(3クラス・4特徴量)に対してRBFカーネルSVMを学習し、テスト精度を出力します。デフォルトパラメータのままで9割以上の精度が出るのが、SVMのベースラインとしての強さです。

このアプローチの利点は複数あります。
まずmake_pipelineでStandardScalerとSVCを繋いでいるため、後述する「特徴量スケーリングが強く推奨される」というSVMの前提を自動で満たせます。

次にSVCのデフォルトはRBFカーネル・C=1.0・γ=scaleで、多くのタスクでこの初期値がまともなベースラインになります。

実務では、まずこのコードを動かして精度を確認し、必要に応じてハイパーパラメータチューニングに進むのが定石ワークフローです。

C・γ・カーネルの調整の勘所

CとgammaとカーネルのTune

SVMの性能を左右する主要パラメータは、C・γ・kernelの3つです。

  • C(正則化パラメータ)
    デフォルト1.0。大きくすると誤分類に厳しくなりマージンが狭まる(過学習寄り)。小さくすると誤分類に寛容でマージンが広がる(未学習寄り)。0.01〜100の範囲を10倍刻みで探索するのが定石

  • γ(RBFカーネルの局所性)
    デフォルト'scale'(=1/(n_features × X.var()))。大きくすると境界が局所的で複雑に(過学習寄り)。小さくするとなだらかに(未学習寄り)。0.001〜10の範囲を10倍刻みで探索

  • kernel(カーネルの種類)
    デフォルト'rbf'。テキスト分類など高次元スパースなら'linear'を先に試す。'poly'と'sigmoid'は使う場面が限定的

CとγはGridSearchCVで組み合わせ探索するのが標準です。以下のコードで、C×γの5×5=25通りを5-fold交差検証で回して最適値を得られます。

from sklearn.model_selection import GridSearchCV

param_grid = {
    'svc__C': [0.01, 0.1, 1, 10, 100],
    'svc__gamma': [0.001, 0.01, 0.1, 1, 10]
}
grid = GridSearchCV(clf, param_grid, cv=5, n_jobs=-1)
grid.fit(X_train, y_train)
print(grid.best_params_, grid.best_score_)


このアプローチの利点は、パラメータ空間を機械的に探索できる点と、交差検証で汎化性能を評価できる点です。ただし探索点数×交差検証fold数だけSVCの学習が走るため、数万サンプル規模のデータでは計算コストが跳ね上がります。

大規模データでは、RandomizedSearchCVでランダムサンプリングに切り替えるか、まず少数サンプルで大まかな最適領域を特定してから精査する2段階探索が実務的です。

scikit-learn公式RBFカーネルにおけるCとγの検証精度ヒートマップ
RBFカーネルのCとγの組み合わせが検証精度に与える影響(出典:scikit-learn RBF SVM parameters

ヒートマップの明るい対角帯が高精度領域で、γが大きいときはCを小さめに、γが小さいときはCを大きめに取ると精度が伸びる関係が視覚的に読み取れます。

左上(C・γともに小さい)と右下(C・γともに大きい)の暗い領域は未学習・過学習のいずれかに陥っている状態で、実務のGridSearchCVでもこの対角帯に最適点が現れやすいです。

前処理でスケーリングが強く推奨される理由

前処理でスケーリングが強く推奨される理由

SVMは、特徴量のスケール(値の範囲)に対してスケール不変ではありません。

たとえば「年齢(0〜100)」と「年収(0〜1,000万円)」を同じデータに入れると、年収の距離ばかりが支配的になり、年齢の情報がほぼ無視されます。
この結果、カーネル計算の内積が年収に引きずられ、モデル性能が大きく落ちるケースが典型的です。

多くのケースで有効な対処は、学習前に全特徴量を平均0・分散1に揃える標準化(StandardScaler)です。
データが上下限に張り付く分布ならMinMaxScaler、外れ値が多いならRobustScalerを選ぶ選択肢もあります。

いずれの前処理も、make_pipelineでSVCと一体化しておくのがscikit-learn公式SVMガイドで推奨される書き方で、GridSearchCV配下でもデータ漏洩(テストデータのスケーリング情報が学習に混ざる)を自動的に防げます。

マルチクラス(OVO/OVR)と確率出力の扱い

マルチクラスと確率出力の扱い

SVCで多クラス分類を行う場合、内部処理はOVOですが、predict_probaで確率を得たい場合には注意点があります。

以前はSVCにprobability=Trueを渡すことで確率出力を有効化できましたが、この機能はscikit-learn 1.9で非推奨化されました(SVC公式ドキュメント)。

今後の推奨方法は、CalibratedClassifierCVでSVMをラップする形です。

from sklearn.calibration import CalibratedClassifierCV
from sklearn.svm import SVC

calibrated = CalibratedClassifierCV(SVC(kernel='rbf'), ensemble=False)
calibrated.fit(X_train, y_train)
proba = calibrated.predict_proba(X_test)


このアプローチの利点は、確率キャリブレーションを別クラスで明示的に扱うため、SVMの学習部と確率出力部が分離される点にあります。ensemble=Falseを指定すると単一のSVMモデルで確率を出力でき、複数モデルのアンサンブルを避けたい場合に有効です。多クラスの決定関数形状(OVOとOVRの切り替え)はdecision_function_shapeパラメータで制御可能で、外部ライブラリと連携する場合の互換性確保にも使えます。


SVMの学習時間ネックとGPU加速(RAPIDS cuML)の現在地

SVMの学習時間ネックとGPU加速

SVMの学習時間が「サンプル数に対して二次以上」でスケールする問題は、実務でSVMを諦める最大の理由になってきました。しかし、CPU側の回避策とGPU側の加速手段の両方が2020年代に成熟し、この壁は昔ほど絶対的ではなくなっています。

本セクションでは、なぜSVMの学習が数万サンプル超で遅くなるのか、その回避策としてCPU側で使える手法(LinearSVC・SGDClassifier・Nystroem近似)、そしてGPUで動かすRAPIDS cuMLの現在地を順に整理します。

なぜ数万サンプル超で遅くなるか

なぜ数万サンプル超で遅くなるか

SVMの学習は、内部的に二次計画問題(Quadratic Programming)を解いています。

libsvmが採用するSMO(Sequential Minimal Optimization)アルゴリズムの計算量は、scikit-learn公式ドキュメントによると特徴数×サンプル数の2乗〜3乗のオーダーで、サンプル数が増えるほど急激に遅くなります。

scikit-learn実装は完全なカーネル行列を常に保持するわけではなく、内部でcache_size(デフォルト200MB)分だけキャッシュしますが、大規模データではキャッシュ外の計算が繰り返され実効速度が落ちます。

scikit-learn公式は、SVC/NuSVC/SVR/NuSVRについて「数万サンプルを超えると実用的でない」と明記しており、この上限はlibsvmベースのアルゴリズム自体の性質に由来します。

CPU側の3つの回避策

CPU側の3つの回避策

CPU環境のまま大規模SVMを扱うには、3つの選択肢があります。

  • LinearSVC(liblinearベース)
    線形カーネル専用の実装。デフォルトのdual='auto'はサンプル数・特徴量数・loss・penaltyの組み合わせから主問題/双対問題を自動選択する(特徴量数がサンプル数を上回るケースでは双対問題側が選ばれることがある)(LinearSVC公式API)。

SVCより大規模データにスケールしやすく、テキスト分類・スパース特徴量で候補になる

  • SGDClassifier(確率的勾配降下法)
    ヒンジ損失+L2正則化を使えば線形SVMと同等のモデルを、SGDでミニバッチ学習できる。1回の更新が軽く、ストリーミング学習にも対応

  • Nystroem近似
    RBFなどの非線形カーネルを低ランク近似し、その後LinearSVCなどの線形分類器に流す2段構え。「非線形カーネルを大規模データで使いたいがSVC本体は現実的でない」場面に有効

この3手法を組み合わせれば、CPU環境でも大規模データに対してSVM系のモデルを扱いやすくなります。
特にテキスト分類のように線形カーネルで十分なタスクでは、LinearSVCが有力な選択肢になります。

機械学習における評価指標を交差検証で照合しつつ、SVCとの精度差・学習時間差を実測して手法を選定してください。

GPUで動かす——RAPIDS cuML

GPUで動かすRAPIDS cuML
NVIDIAが提供するオープンソースGPU機械学習ライブラリRAPIDS cuMLは、scikit-learn互換のAPIでSVMをGPU実行できる選択肢です。

RAPIDS 25.08(2025年8月リリース、紹介ブログは9月17日公開)で、LinearSVC/LinearSVRが新たにcuml.accel(ゼロコード変更でscikit-learnコードをGPU実行する仕組み)に対応し、SVMファミリー全体がcuml.accelのカバー範囲に入りました。

既存のscikit-learnコードの先頭で「import cuml.accel; cuml.accel.install()」を呼ぶだけで、対応条件を満たす処理がGPUへディスパッチされます。ただしマルチクラスSVCや疎行列入力のLinearSVCなど、条件を満たさない処理はCPU側にフォールバックするため、対応範囲はcuml.accel制約ページで必ず確認してください。

具体的な性能は、RAPIDS AI公式ベンチマーク(2020年時点のNVIDIA V100 GPU × Intel Xeon Gold 6148 CPU 2ソケット・合計40コア、Forest cover typeデータセット、RBFカーネル条件)で、10万サンプル規模でscikit-learnのSVCが1,126秒かかったのに対し、cuMLのSVCは2.1秒で完了しました。
約500倍の学習高速化、予測は約1,000倍速いという結果です。

RAPIDS cuML SVMがscikit-learnとThunderSVM系を上回るSVC予測時間ベンチマーク
サンプル数を増やしたときのSVC予測時間比較(2020年NVIDIA V100 × Xeon Gold 6148×2・Forest cover type・RBFカーネル)。cuML SVM(緑)だけが桁外れに低い水準を維持している(出典:RAPIDS AI公式ブログ

グラフを見ると、scikit-learn(紫)はサンプル数が数万を超えた時点でチャートの上端を突き抜けており、ThunderSVM CPU(青)も10万サンプル付近で急激に立ち上がっています。

GPU実装のうちThunderSVM GPU(赤)とcuML SVM(緑)は50万サンプルまで実用範囲に収まり、同ベンチマークの条件下ではcuML SVMがThunderSVM GPUに対しても約4.3倍速いという結果になっています。

GPUが1枚使える環境なら、これまで「サンプル数が多すぎてSVMは諦めていた」ケースを再検討する余地が広がります。

ただしGPUメモリの容量制約は残るうえ、cuml.accelはfallback条件下で期待した加速が得られない場合もあるため、100万サンプル超ではLinearSVC + Nystroem近似のCPU側の組み合わせも並行して測って手法選定するのが実務的です。


SVMの活用領域——医療画像分類からLLM時代のゲート分類器まで

SVMの活用領域

SVMがどんな現場で使われているかを、代表的な3領域で整理します。ここではSVMの「今」の役割が最もクリアに見えます。

本セクションでは、古典的な強さが残る医療画像分類、実運用が長く続くスパム・不正検知、そしてLLM時代に再登場したembedding上のゲート分類器としての活用を順に紹介します。

医療画像分類——乳がん・肺がん・脳腫瘍MRI

医療画像分類

医療画像分類は、SVMが長く研究ベースラインとして扱われてきた代表領域で、2024〜2025年時点でも新規研究が継続的に発表されています。

以下はいずれも公開データセットや単一施設データを用いた研究例であり、医療現場での実運用実績を直接示すものではない点にご注意ください。

  • 乳がん超音波画像
    2023年6月〜2024年6月に実施された研究(PMC11620022)で、ErbilのNanakali病院データとKaggle公開データを用いてANNとSVMの乳腺腫瘍分類を比較

  • 肺がんCT画像
    2024年公開のFrontiers in Oncology掲載研究で、Chameleon Swarm最適化とSVMを組み合わせて良性・悪性・正常結節を識別

  • 脳腫瘍MRI
    2024年に公開されたMRI画像分類研究で、SVMアルゴリズムを用いて良性・悪性腫瘍を検出・分類

医療画像でSVMが研究の候補になりやすい理由は、症例データが数百〜数千件と少なく、深層学習単独では過学習しやすい一方で、CNNやTransformerによる特徴抽出後のベクトルにSVMを載せることで安定した分類器を作りやすいためです。

「特徴抽出はCNN、分類はSVM」という2段構えは、こうした少データ×高次元の医用画像タスクで研究例として複数報告されている構成です。

スパム・不正検知——長期運用に耐える古典

スパム・不正検知

Eメールのスパム判定、クレジットカードの不正取引検知、顔認証システムなど、SVMが1990年代から採用され続けている領域は数多くあります。

これらの現場でSVMが残っている典型的な理由は、LinearSVC + TF-IDFのような線形構成で「モデルサイズが比較的小さく、推論レイテンシーを低く抑えやすい」ことです(scikit-learn 計算性能ガイド)。

ただし非線形カーネルのSVCはサポートベクター数に応じて推論時間が伸び、RBF境界の解釈も一般に容易とは言えません。大量トラフィックを処理する分類パイプラインでも、これらの利点を得たいときはSVMの線形構成に絞るケースが多いです。

とくにテキスト分類ではLinearSVC + TF-IDFという古典的な構成が、Web管理系のスパムフィルタ・製品レビューの感情分類などで今もリファレンス実装として使われ続けています。

LLM時代の埋め込みゲート・ルーター

LLM時代の埋め込みゲート・ルーター

2020年代後半に入り、「LLMやテキスト埋め込みAPIが出力するベクトルの上に軽量分類器を載せる」という設計パターンが、意図分類・コンテンツルーティング・安全性ゲートの実装例として取り上げられるようになりました。

代表的な公開例は、OpenAI cookbook: Classification using embeddingsで紹介されている「埋め込み+分類器」の構成です。

埋め込みAPI(Cohere Embed、OpenAI text-embedding系など・モデルにより256〜3072次元と幅がある)で得たベクトルを、そのまま分類器の入力として使うシンプルな設計になります。

この分類器層で選ばれる手法はロジスティック回帰・セントロイド分類器・k-NN・小型Transformer分類ヘッドなど複数あり、SVMもそのなかの1つの選択肢として扱われます。

近年のルーティング研究では小型Transformerやクラスタリングベースの手法も比較検討されており、「SVMが最有力」と言い切れる状況ではありません。

具体的な使い所は以下のようなパターンです。

  • カスタマーサポート問い合わせを「請求」「技術」「一般」に分類して、それぞれ別のプロンプトテンプレートへルーティング
  • LLM出力を「安全」「レビュー必要」「ブロック」の3クラスに分類して、コンテンツモデレーションを自動化
  • RAGパイプラインで「社内文書に答えがある」「web検索が必要」「専門家対応が必要」を判定して、経路を切り替え


LLMを使ったエージェントは、リクエストごとに複数の軽量な判定を挟む設計になることが多く、その判定を全てLLMに委ねるとコストとレイテンシーが跳ね上がります。

SVM・小型トランスフォーマー分類器・ロジスティック回帰などの「Tiny Classifier」群が候補になる場面で、SVMは1990年代の古典アルゴリズムでありながら、LLM時代の候補手法として一定のポジションを保っているのが現在地です。

メルマガ登録


SVMのようなアルゴリズム選定力を業務Agent戦略に発展させるなら

SVMのようなアルゴリズムの適材適所を判断できる人材は、AIをどの業務にどう適用すべきかを技術的に切り分けられる貴重な存在です。

ただし個別モデルの精度を上げても、業務プロセス全体に対するAIの当て方が定まらなければPoCで止まります。モデル選定と業務Agent実装をつなぐ運用基盤が並行して必要です。

このレイヤーを担うのが、自社Azureテナント内で動くエンタープライズAIエージェント基盤です。AI総合研究所のAI Agent Hubは、Teamsから呼び出せる業務特化Agent群を1つのダッシュボードで統合管理し、SVM・XGBoost・LLMなど用途別モデルをバックエンドに使い分けても業務プロセス側の設計を守れる運用基盤として機能します。

  • モデル種別を用途で使い分けられる管理層
    記事で扱ったSVM・XGBoost・深層学習・LLMの棲み分けを、業務Agent単位で設計。分類・回帰・生成・エージェント判断など、タスク特性に合ったモデルをAgent層で吸収できます。

  • LLM時代のゲート分類器としてのSVM活用
    記事のLLM前段でのゲート分類器やレスポンスフィルタといった用途を、業務AgentのパイプラインにSVMコンポーネントとして組み込む設計を支援。LLM単独運用よりコスト・精度・安全性で優位に立てます。

  • 構築基盤が違っても管理は1つ
    Copilot Studio・n8n・Microsoft Foundryなど複数の構築基盤で作ったAgentを1つのダッシュボードに集約。実行ログ・アクセス権限・セキュリティスキャンを一元管理します。

  • データは100%自社Azureテナント内に保持
    学習データ・推論データはAIの学習対象から完全除外。Azure Managed Applicationsとして自社テナント内で動作が完了する設計です。



AI総合研究所の専任チームが、アルゴリズム選定から業務Agent基盤の統合設計まで一貫して支援します。AI Agent Hubのサービスページで、モデル選定と業務プロセスの接続実装をご確認ください。

アルゴリズム選定を業務Agent戦略へ

AI Agent Hub

モデル選定と業務Agent実装を接続

SVMのようなアルゴリズム選定力を組織のAI戦略に活かすには、モデル単位ではなく業務Agent基盤との接続設計が要ります。AI Agent Hubは業務特化Agent群を1つのダッシュボードで統合管理し、モデル選定と業務プロセスをつなぐ運用基盤として機能します。


まとめ

本記事では、サポートベクターマシン(SVM)について、定義と中核アイデア、scikit-learnクラス構成、学習時間の二次スケール問題への対応、LLM embedding上での軽量分類器としての位置づけまでを、2026年7月時点の最新情報で解説しました。

2026年時点で押さえておくべきポイントは次の3つです。

  • SVMはマージン最大化とカーネルトリックの2アイデアを持つ古典アルゴリズムで、少データ・高次元・線形分離が有効なタスクでは依然として有力な選択肢
  • scikit-learnのSVC/NuSVC/LinearSVC/SVR/NuSVR/LinearSVR/OneClassSVMの7クラスで、分類・回帰・異常検知の3系統を網羅する
  • 学習時間の二次スケール問題はLinearSVC・SGDClassifier・Nystroem近似・RAPIDS cuMLで大幅に緩和でき、LLM embedding上の軽量分類器候補としても残っている

いきなり手法を1つに絞らず、ランダムフォレスト・SVM・勾配ブースティングを同じパイプラインで比較して、少データ・高次元スパース・低レイテンシー要件が見えた場面でLinearSVC等の線形SVMを本命候補に据えるのが、実務でSVMを持ち出すタイミングを外さない進め方です。

監修者
坂本 将磨

坂本 将磨

Microsoft MVP・AIパートナー。LinkX Japan株式会社 代表取締役。東京工業大学大学院にて自然言語処理・金融工学を研究。NHK放送技術研究所でAI・ブロックチェーンの研究開発に従事し、国際学会・ジャーナルでの発表多数。経営情報学会 優秀賞受賞。シンガポールでWeb3企業を創業後、現在は企業向けAI導入・DX推進を支援。

関連記事

AI導入の最初の窓口

お悩み・課題に合わせて活用方法をご案内いたします
お気軽にお問合せください

AI総合研究所 Bottom banner

ご相談
お問い合わせは
こちら!