ホーム テクノロジー 開発 機械学習におけるサポート ベクター マシン (SVM)

機械学習におけるサポート ベクター マシン (SVM)


サポート ベクター マシンは、最も人気のある機械学習アルゴリズムの 1 つです。効率的で、限られたデータセットでトレーニングできます。しかし、それは何でしょうか?

サポート ベクター マシン (SVM) とは何ですか?

サポート ベクター マシンは、教師あり学習を使用してバイナリ分類用のモデルを作成する機械学習アルゴリズムです。それは一口です。この記事では、SVM とそれが自然言語処理にどのように関係するかについて説明します。その前に、サポート ベクター マシンがどのように動作するかを分析しましょう。

SVMはどのように機能しますか?

x と y の 2 つの特徴と 1 つの出力 (赤または青のいずれかの分類) を持つデータがある単純な分類問題を考えてみましょう。次のような架空のデータセットをプロットできます。

無題の絵
無題の絵

このようなデータが与えられた場合、タスクは決定境界を作成することになります。決定境界は、データ ポイントの 2 つのクラスを分離する線です。これは同じデータセットですが、決定境界があります。

無題の絵-1
無題の絵-1

この決定境界を使用すると、データポイントが決定境界に対してどの位置にあるかを考慮して、データポイントがどのクラスに属するかを予測できます。サポート ベクター マシン アルゴリズムは、ポイントの分類に使用される最適な決定境界を作成します。

しかし、最良の決定境界とは何を意味するのでしょうか?

最良の決定境界は、サポート ベクトルのいずれかからの距離を最大化する境界であると主張できます。サポート ベクターは、反対側のクラスに最も近いいずれかのクラスのデータ ポイントです。これらのデータ ポイントは、他のクラスに近いため、誤分類の最大のリスクを引き起こします。

無題の絵-2
無題の絵-2

したがって、サポート ベクター マシンのトレーニングには、サポート ベクター間のマージンを最大化するラインを見つけようとすることが含まれます。

決定境界はサポート ベクトルを基準にして配置されるため、決定境界の位置を決定するのはサポート ベクトルのみであることに注意することも重要です。したがって、他のデータポイントは冗長です。したがって、トレーニングにはサポート ベクターのみが必要です。

この例では、形成される決定境界は直線です。これは、データセットに特徴が 2 つしかないためです。データセットに 3 つのフィーチャがある場合、形成される決定境界は線ではなく平面になります。 4 つ以上の特徴がある場合、決定境界は超平面として知られます。

非線形分離可能なデータ

上の例では、プロットすると線形の決定境界によって分離できる非常に単純なデータを検討しました。データが次のようにプロットされる別のケースを考えてみましょう。

無題の絵-4
無題の絵-4

この場合、データを線で区切ることはできません。しかし、別の機能 z を作成することもできます。そして、この特徴は方程式 z = x^2 + y^2 で定義できます。平面に 3 番目の軸として z を追加して、平面を 3 次元にすることができます。

X 軸が水平、Z 軸が垂直となるような角度から 3D プロットを見ると、次のようなビューが得られます。

無題の絵-5
無題の絵-5

Z 値は、古い XY 平面内の他の点と比較して、点が原点からどのくらい離れているかを表します。その結果、原点に近い青い点の Z 値は低くなります。

原点から遠い赤い点ほど Z 値が高くなりますが、それらを Z 値に対してプロットすると、図に示すように、線形の決定境界で区切ることができる明確な分類が得られます。

これは、サポート ベクター マシンで使用される強力なアイデアです。より一般的には、データ ポイントを線形境界で分離できるように、次元をより多くの次元にマッピングするという考え方です。これを担当する関数はカーネル関数です。シグモイド、線形、非線形、RBF など、多くのカーネル関数があります。

これらの機能のマッピングをより効率的に行うために、SVM はカーネル トリックを使用します。

機械学習における SVM

サポート ベクター マシンは、デシジョン ツリーやニューラル ネットワークなどの一般的なアルゴリズムと並んで、機械学習で使用される多数のアルゴリズムの 1 つです。他のアルゴリズムよりも少ないデータでうまく機能するため、好まれています。一般的には、次のことを行うために使用されます。

  • テキスト分類: コメントやレビューなどのテキスト データを 1 つ以上のカテゴリに分類します。
  • 顔検出: 画像を分析して顔を検出し、拡張現実用のフィルターの追加などを行います。
  • 画像分類: サポート ベクター マシンは、他のアプローチと比較して画像を効率的に分類できます。

テキスト分類の問題

インターネットには、膨大な量のテキストデータが溢れています。ただし、このデータの多くは構造化されておらず、ラベルも付いていません。このテキスト データをより効果的に使用し、より深く理解するには、分類する必要があります。テキストが分類される例としては、次のようなものがあります。

  • ツイートをトピックに分類して、ユーザーが必要なトピックをフォローできるようにする場合
  • 電子メールがソーシャル、プロモーション、またはスパムのいずれかに分類された場合
  • 公開フォーラムでコメントが憎悪的またはわいせつなものとして分類された場合

SVM が自然言語分類でどのように動作するか

サポート ベクター マシンは、テキストを特定のトピックに属するテキストとトピックに属さないテキストに分類するために使用されます。これは、最初にテキスト データをいくつかの特徴を備えたデータセットに変換して表現することによって実現されます。

これを行う 1 つの方法は、データ セット内のすべての単語の特徴を作成することです。次に、テキスト データ ポイントごとに、各単語の出現回数を記録します。そこで、データセット内に一意の単語が出現していると仮定します。データセットに特徴が含まれます。

さらに、これらのデータ ポイントの分類を提供します。これらの分類はテキストでラベル付けされますが、ほとんどの SVM 実装では数値ラベルが必要です。

したがって、トレーニング前にこれらのラベルを数値に変換する必要があります。これらの特徴を座標として使用してデータセットを準備したら、SVM モデルを使用してテキストを分類できます。

Python での SVM の作成

Python でサポート ベクター マシン (SVM) を作成するには、 sklearn.svmライブラリのSVCクラスを使用できます。 SVCクラスを使用して Python で SVM モデルを構築する方法の例を次に示します。

 from sklearn.svm import SVC 

# Load the dataset 
X = ... y = ... 

# Split the data into training and test sets 

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=19) 

# Create an SVM model 
model = SVC(kernel='linear') 

# Train the model on the training data 
model.fit(X_train, y_train) 

# Evaluate the model on the test data 
accuracy = model.score(X_test, y_test) 

print("Accuracy: ", accuracy) 

この例では、最初にsklearn.svmライブラリからSVCクラスをインポートします。次に、データセットをロードし、トレーニング セットとテスト セットに分割します。

次に、 SVCオブジェクトをインスタンス化し、 kernelパラメータを「linear」として指定することにより、SVM モデルを作成します。次に、 fitメソッドを使用してトレーニング データでモデルをトレーニングし、 scoreメソッドを使用してテスト データでモデルを評価します。 scoreメソッドはモデルの精度を返し、それをコンソールに出力します。

正則化の強度を制御するCパラメータや、特定のカーネルのカーネル係数を制御するgammaパラメータなど、 SVCオブジェクトの他のパラメータを指定することもできます。

SVM の利点

サポート ベクター マシン (SVM) を使用する利点のリストを次に示します。

  • 効率的: SVM は一般に、特にサンプル数が多い場合にトレーニングが効率的です。
  • ノイズに対して堅牢: SVM は、他の分類器よりもノイズの影響を受けにくい最大マージン分類器を見つけようとするため、トレーニング データ内のノイズに対して比較的堅牢です。
  • メモリ効率が高い: SVM では、常にトレーニング データのサブセットのみがメモリ内に存在する必要があるため、他のアルゴリズムよりもメモリ効率が高くなります。
  • 高次元空間で効果的: SVM は、特徴の数がサンプルの数を超えている場合でも、良好なパフォーマンスを維持できます。
  • 汎用性: SVM は分類タスクや回帰タスクに使用でき、線形データや非線形データなどのさまざまなタイプのデータを処理できます。

次に、サポート ベクター マシン (SVM) を学習するのに最適なリソースをいくつか見てみましょう。

学習リソース

サポートベクターマシンの概要

サポート ベクター マシンの概要に関するこの本では、カーネルベースの学習方法を包括的かつ段階的に紹介します。

これにより、サポート ベクター マシン理論の確固たる基礎が得られます。

サポートベクターマシンのアプリケーション

最初の本はサポート ベクター マシンの理論に焦点を当てていましたが、サポート ベクター マシンのアプリケーションに関するこの本は実際のアプリケーションに焦点を当てています。

SVM が画像処理、パターン検出、コンピューター ビジョンでどのように使用されるかを見ていきます。

サポートベクターマシン(情報科学と統計)

サポート ベクター マシン (情報科学と統計) に関する本書の目的は、さまざまなアプリケーションにおけるサポート ベクター マシン (SVM) の有効性の背後にある原理の概要を提供することです。

著者らは、限られた数の調整可能なパラメータでも良好なパフォーマンスを発揮する能力、さまざまな種類のエラーや異常に対する耐性、他の手法と比較した効率的な計算パフォーマンスなど、SVM の成功に寄与するいくつかの要因を強調しています。

カーネルを使った学習

『Learning with Kernels』は、サポート ベクター マシン (SVM) と関連するカーネル技術を読者に紹介する本です。

読者に数学の基本的な理解と、機械学習でカーネル アルゴリズムの使用を開始するために必要な知識を提供するように設計されています。この本の目的は、SVM とカーネル メソッドについて、徹底的かつわかりやすい入門書を提供することです。

Sci-kit Learnによるサポートベクターマシン

Coursera プロジェクト ネットワークによるこのオンラインサポート ベクター マシン with Sci-kit Learnコースでは、人気のある機械学習ライブラリである Sci-Kit Learn を使用して SVM モデルを実装する方法を説明します。

Sci-kit Learnによるサポートベクターマシン
Sci-kit Learnによるサポートベクターマシン

さらに、SVM の背後にある理論を学び、その長所と限界を判断します。このコースは初級レベルで、所要時間は約 2.5 時間です。

Python のサポート ベクター マシン: 概念とコード

Udemy によるPython のサポート ベクター マシンに関するこの有料オンライン コースには、最長 6 時間のビデオベースの指導があり、認定資格が付いています。

Python のサポート ベクター マシン: 概念とコード
Python のサポート ベクター マシン: 概念とコード

SVM と、それを Python で確実に実装する方法について説明します。さらに、サポート ベクター マシンのビジネス アプリケーションについても説明します。

機械学習と AI: Python のサポート ベクター マシン

機械学習と AIに関するこのコースでは、画像認識、スパム検出、医療診断、回帰分析など、さまざまな実用的なアプリケーションでサポート ベクター マシン (SVM) を使用する方法を学びます。

機械学習と AI: Python のサポート ベクター マシン
機械学習と AI: Python のサポート ベクター マシン

Python プログラミング言語を使用して、これらのアプリケーションの ML モデルを実装します。

最後の言葉

この記事では、サポート ベクター マシンの背後にある理論について簡単に学びました。私たちは、機械学習と自然言語処理におけるそれらの応用について学びました。

また、 scikit-learnを使用した実装がどのようなものかを確認しました。さらに、サポート ベクター マシンの実際のアプリケーションと利点についても話しました。

この記事は単なる紹介でしたが、追加のリソースでは、サポート ベクター マシンについてさらに詳しく説明することを推奨しています。 SVM の多用途性と効率性を考えると、データ サイエンティストおよび ML エンジニアとして成長するためには、SVM を理解する価値があります。

次に、上位の機械学習モデルをチェックしてみましょう。

「機械学習におけるサポート ベクター マシン (SVM)」についてわかりやすく解説!絶対に観るべきベスト2動画

【5分で分かる】サポートベクターマシン(SVM)の入門基礎を解説!
【機械学習】サポートベクトルマシン(前編)|  SVMの理論、ハードマージンとソフトマージン