Ultralytics YOLO27: ウェイトリストに登録する
YOLOのライセンス
Ultralytics用語集に戻る

Support Vector Machine (SVM)

サポートベクターマシン(SVM)は、最大マージンの超平面でクラスを分離し、カーネルを使って曲線状の境界を形成します。仕組み、調整方法、コードについて解説します。

サポートベクターマシン(SVM)は、2つのクラスを分離する超平面を、境界と各クラスの最も近い学習点との間の距離が最大になるように見つけてデータを分類する教師あり学習アルゴリズムです。この最も近い点であるサポートベクターだけが、境界を決定する学習例となります。カーネル関数を使うと、SVMは曲線状の境界を学習でき、派生手法では回帰や外れ値検出にも対応できます。Vladimir VapnikらがAT&T Bell Labsでこの手法を開発し、カーネル版は1992年に、現在使われているソフトマージンの定式化は1995年にCortesとVapnikが発表しました。深層学習が登場する前、SVMはテキスト、画像、生物学的データに対して最も精度の高い分類器の一つでした。現在も、多数の特徴量を持つ小規模から中規模のデータセットで優れた性能を発揮します。

SVMの仕組み#

線形SVMは、w·x + bの符号からクラスを予測します。そのため、決定境界は超平面 w·x + b = 0 となり、最も近い点が |w·x + b| = 1 を満たすように重みをスケーリングすると、マージンの幅は 2/‖w‖ になります。学習では、すべての学習点がマージンの正しい側に位置することを条件に、‖w‖²を最小化してマージンを最大化します。実際のクラスは重なり合うため、ソフトマージンSVMでは点がマージンを越えることを許容し、そのコストを正則化パラメーターCで調整します。ヒンジ損失は、マージンを越えて正しく分類された点には損失を課さず、それ以外の点には違反の程度に応じて線形に増加するペナルティを課します。Cが小さい場合は違反を多く許容し、幅の広い滑らかなマージンになります。一方、Cが大きい場合は学習データへの適合度が高まるものの、過学習のリスクも高まります。学習済みモデルでは、マージン上またはマージンの誤った側にある点だけがゼロ以外の重みを持ちます。これらがサポートベクターであり、他の点をマージンの外へ移動させない限り、境界は変化しません。

カーネルトリック#

クラスを分離する超平面がない場合、データをより高次元に写像すると分離できることがあります。たとえば、2次元上の同心円は、各点と中心の距離を測る3つ目の特徴量 x₁² + x₂² を加えると、平面で分離できます。双対形式では、SVMの学習と予測は点のペア間の内積だけを使います。そのため、カーネル関数 k(x, x′) は、写像後の座標を実際に計算することなく、写像先の空間における内積を直接返せます。これがカーネルトリックです。よく使われるカーネルには、線形、多項式、放射基底関数(RBF)exp(−γ‖x − x′‖²)があり、γは各サポートベクターの影響範囲を決定します。この例では、同心円のデータに線形カーネルとRBFカーネルを適用するscikit-learnのSVCを学習します。

from sklearn.datasets import make_circles
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC

# Two concentric rings: no straight line separates the classes
X, y = make_circles(n_samples=500, factor=0.4, noise=0.1, random_state=0)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

for kernel in ("linear", "rbf"):
    clf = SVC(kernel=kernel, C=1.0)
    clf.fit(X_train, y_train)
    print(f"{kernel}: test accuracy {clf.score(X_test, y_test):.2f}, support vectors {clf.n_support_.sum()}")

線形カーネルのホールドアウトデータでのスコアは0.43で、推測よりも低く、375個の学習点のうち360個がサポートベクターになります。RBFカーネルはわずか42個のサポートベクターで円を完全に分離し、スコアは1.00です。

カーネルとハイパーパラメーターの選択#

距離と内積は特徴量のスケールに依存するため、SVMの入力は最初に標準化します。scikit-learnのSVCが基盤とするライブラリであるLIBSVMの著者による実践ガイドでは、特徴量のスケーリング、RBFカーネルからの開始、そしてグリッドサーチと交差検証を使ったCとγの選択が推奨されています。テキストのように、サンプル数に比べて特徴量がはるかに多い場合は、線形カーネルでもほぼ同等の性能が得られ、学習も大幅に高速です。カーネルSVMの学習時間はサンプル数に対して少なくとも二次的に増加するため、数万件を超えるサンプルでは、正確なカーネルモデルの代わりに線形SVMまたは近似カーネル特徴量を使用します。

コンピュータービジョンにおけるSVM#

従来のコンピュータービジョンでは、手設計の特徴量と線形SVMが組み合わされていました。DalalとTriggsによる2005年の歩行者検出器は、勾配方向ヒストグラム(HOG)を線形SVMで分類しました。また、2014年のR-CNN 物体検出器は、各領域候補のCNN特徴量をクラスごとの線形SVMで分類していましたが、2015年にFast R-CNNがネットワークと同時に学習するソフトマックス層に置き換えました。現代の検出器は特徴量と分類器を同時に学習しますが、SVMは固定された特徴量上で動作する高速な分類器として活用されています。YOLO26がmodel.embed()から返すベクトル(画像ごとに1つの埋め込み)で学習した線形SVMは、ネットワークを再学習せずに新たな画像カテゴリを追加する線形プローブです。

用途#

  • テキスト分類: 単語数ベクトルは数万次元の疎な表現になるため、線形SVMはトピック、スパム、感情を高精度で分類できます。この利点は、Thorsten Joachimsが1998年にテキスト分類で実証しました。
  • バイオインフォマティクス: 遺伝子発現研究では、数千個の測定済み遺伝子と数十人から数百人の患者のデータから腫瘍を分類します。このような状況ではマージンによって過学習が抑えられ、ストリングカーネルを使うとタンパク質配列を直接比較できます。
  • 異常検知: One-class SVMは正常データだけを囲む境界を学習し、その外側の点を異常として検出します。そのため、不具合のラベル付けが難しいほど発生頻度の低い、不正検出や機械監視に適しています。
  • 回帰: サポートベクター回帰は、幅εのチューブ内に関数を当てはめ、ε未満の誤差を無視し、チューブ上またはチューブ外の点だけをサポートベクターとして保持します。
  • K近傍法(KNN): 学習セット全体を保持し、予測時に新しい点とその近傍を比較します。一方、SVMが保持するのはサポートベクターだけです。
  • 決定木とランダムフォレスト: 一度に1つの特徴量で分割し、特徴量のスケーリングが不要で、数値列とカテゴリ列が混在するデータも扱えます。一方、SVMの入力は数値化してスケーリングする必要があります。
  • ニューラルネットワーク: カーネルで固定するのではなく、データから特徴量の写像を学習するため、カーネルSVMでは遅くなりすぎる数百万枚の画像にも対応できます。
  • ロジスティック回帰: 線形境界も学習しますが、すべての学習点で対数損失を最小化し、確率を出力します。SVMは境界からの符号付き距離を出力します。scikit-learnのSVCが確率を出力するのはprobability=Trueを使う場合だけで、内部の5分割交差検証を通じてPlattスケーリングを適用します。

ソリューションを見る

スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、自然保護、地理空間分析に活用できます。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOを活用して航空宇宙分野でコンピュータビジョンを導入し、航空機検査、滑走路上のFOD検出、空港の地上業務、複合材の欠陥検出に活用できます。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る

AIの未来を一緒に築きましょう!

機械学習の未来に向けた歩みを始めましょう