サポートベクターマシン(SVM)
分類、回帰、そして外れ値検出のためのサポートベクターマシン(SVM)のパワーをご覧ください。実際の応用事例と洞察を紹介します。
サポートベクターマシン(SVM)は、ロバストで汎用性の高い教師あり学習アルゴリズムである。
教師あり学習アルゴリズムである。
画像の分類や回帰タスクに使用される。
単にデータに直線を当てはめるアルゴリズムとは異なり、SVMはデータ点を異なるクラスに最もよく分離する最適な超平面(決定境界)を探す。
境界を探索する。SVMの特徴は、以下の点にある。
決定境界と各クラスから最も近いデータ点との距離であるマージンを最大化することである。
である。この広い分離を優先することで、モデルは未知のデータに対してより良い汎化を達成し、オーバーフィッティングのリスクを効果的に低減する。
単純な線形分類器に比べ、オーバーフィッティングのリスクを低減する。
線形分類器に比べ、オーバーフィッティングのリスクを効果的に低減する。
SVMのコアメカニズム
SVMがどのように動作するかを理解するためには、多次元空間にプロットされたデータ点を視覚化することが役に立つ。
各次元は特定の属性や特徴を表す。
-
最適超平面:アルゴリズムは、入力変数空間を分割する平面を特定する。2次元では
次元では直線、3次元では平面、高次元では超平面である。目標は
任意のクラスの最も近いデータ点からの距離を最大に保つ特定の超平面を見つけることである.
-
サポート・ベクトル:これらは決定境界に最も近い特定のデータポイントである。これらは
の方向と位置を本質的にサポートまたは定義するので、「サポート・ベクトル」と呼ばれる。
サポート・ベクトル」と呼ばれます。他のデータ・ポイントを削除しても境界は変わりませんが、サポート・ベクトルを動かすとモデル
モデルを変更します。これらのベクトルについては
Scikit-learn SVM ドキュメントを参照してください。
-
カーネルのトリック実世界のデータが線形分離可能であることは稀である。SVMはカーネル・トリックと呼ばれるテクニックを使ってこれを解決する。
カーネル・トリックと呼ばれる手法でこれを解決する。
でクラスを分割する。一般的なカーネルには、放射基底関数(RBF)や多項式カーネルがあり、これによってモデルは複雑で非線形の関係を扱うことができる。
モデルは、自然言語処理(NLP)でよく見られる複雑な非線形関係を扱うことができる。
自然言語処理(NLP)
タスクを扱うことができる。
実際のアプリケーション
最新の
ディープラーニングアーキテクチャが登場する以前は、SVMは多くのコンピュータビジョンやパターン学習において
多くのコンピュータ・ビジョンやパターン認識の問題において
であった。
-
バイオインフォマティクスとヘルスケアSVMは
特に
特に、マイクロアレイ遺伝子発現データに基づくタンパク質リモート相同性検出や癌分類のような分類問題において、SVMは重要な役割を果たしている。
のような分類問題で重要な役割を果たしている。少ないサンプル数で高次元データを扱えるSVMは、複雑な生物学的データセットの分析に理想的である。
複雑な生物学的データセットの分析に最適である。
-
テキストの分類:データ分析の分野では
データ分析の分野では、SVMはテキストやハイパーテキストの分類に広く使われている。
やハイパーテキストの分類に広く使われている。SVMは標準的な帰納的テキスト分類設定において、ラベル付き学習インスタンスの必要性を大幅に削減する。
誘導的なテキスト分類の設定におけるラベル付き学習インスタンスの必要性を大幅に削減し、スパム検出やセンチメント分析などのアプリケーションに効果的である。
のようなアプリケーションに効率的である。
-
手書き文字認識:SVMは歴史的に、手書きの数字認識タスクで非常に優れた性能を発揮してきた。
MNISTデータセットに見られるような
MNIST データセットに見られるような一方
畳み込みニューラルネットワーク(CNN)
が大部分を占めているが、SVM は、ベンチマークや学習データが限られた場合
学習データが限られている場合
SVM分類器の実装
現代的なタスクは、多くの場合
Ultralytics YOLO11 モデルは、エンド・ツー・エンドの物体検出のためのものである、
SVMは、構造化されたデータ、または抽出された特徴の上の最終的な分類層として、依然として強力なツールである。以下に
を使った簡潔な例である。 scikit-learn ライブラリを使って簡単な分類器を学習します。
from sklearn import svm
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
# Generate synthetic classification data
X, y = make_classification(n_features=4, random_state=0)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
# Initialize and train the Support Vector Classifier
clf = svm.SVC(kernel="linear", C=1.0)
clf.fit(X_train, y_train)
# Display the accuracy on the test set
print(f"Accuracy: {clf.score(X_test, y_test):.2f}")
SVMと関連アルゴリズムの比較
SVMを他の機械学習技法と区別することは、予測モデル・プロジェクトに適したツールを選択するのに役立つ。
予測モデリング・プロジェクトに適したツールを選択するのに役立つ。
-
ロジスティック回帰:どちらも線形分類器ですが、最適化の目標は異なります。ロジスティック回帰は観察されたデータの尤度(確率的)を最大化し
SVMはクラス間の幾何学的マージンを最大化する。SVMは一般に
ロジスティック回帰は較正された確率を提供する。
-
K-最近傍探索(KNN):KNNはノンパラメトリックなインスタンスベースの学習器で、ある点をその近傍の大多数のクラスに基づいて分類します。
これに対してSVMはパラメトリック・モデルである。これに対してSVMはパラメトリック・モデルであり、大域的な境界を学習する。SVMは一般的に
一般にSVMは、データセット全体を保存する必要がないため、一度学習されると推論の待ち時間が短縮される。
KNNとは異なり、データセット全体を保存する必要がないからである。
-
決定木:決定木は、階層的なルールを用いてデータ空間を矩形領域に分割する。SVMは、(カーネルによって)複雑な
SVMは、決定木が近似するのに苦労するような複雑な曲線状の決定境界を(カーネルを使って)作ることができる。
深くなりすぎず、オーバーフィッティングになりやすい。
-
ディープラーニング(YOLO11):SVMは手作業に大きく依存している。
特徴工学に大きく依存する。
が関連する入力を選択する。最新のモデルは YOLO11のような最新のモデルは
生ピクセルから直接自動特徴抽出することに優れている。
ピクセルからの自動特徴抽出に優れているため、リアルタイムの物体検出や
オブジェクト検出や
インスタンスのセグメンテーションのような複雑なタスクに優れています。
基礎理論に興味のある方は、以下の原著論文を参照されたい。
Cortes and Vapnik (1995)は、今日使われているソフトマージンSVMの数学的基礎を提供している。
今日使われているソフトマージンSVMの数学的基礎を提供している。