サポート ベクター マシンとは?
サポートベクターマシン (SVM) は、信号処理医療アプリケーションや自然言語処理、音声および画像認識などの多くの分類と回帰の問題に使用される教師あり学習アルゴリズムです。
SVM アルゴリズムの目的は、あるクラスのデータ点を、別のクラスのデータ点から、可能な限り分離する超平面を見つけることです。「最適」は、2 つのクラス間で最大のマージンを持つ超平面を指します。以下の図では、これをプラスとマイナスで表しています。マージンとは、内部にデータ点を持たない超平面に平行なスラブの最大幅を意味します。線形分離可能な問題でのみ、そのアルゴリズムはそのような超平面を見つけることができます。ほとんどの現実的な問題では、アルゴリズムは少数の誤分類を許容しながら、ソフトマージンを最大化します。
サポートベクターは、学習用観測データの一部で、それを用いて分離超平面の位置を一意に定めることができるものを指します。基本となる SVM アルゴリズムは、バイナリ分類問題用に定式化されたものであるため、マルチクラス分類問題は一般的に、一連のバイナリ分類問題に分解されます。
数学的な詳細までより深く掘り下げると、サポートベクターマシンはカーネル法と呼ばれる機械学習アルゴリズムの種類に属します。これは特徴量をカーネル関数を使用して変換することができます。カーネル関数は、この変換によってクラス同士が分離しやすくなると期待して、このデータを別の空間 (多くの場合、高次元空間) にマッピングします。その結果、複雑な非線形決定境界は、マッピング後の高次元の特徴空間において、線形決定境界へと単純化される可能性があります。このプロセスでは、データを明示的に変換する必要はないため、計算コストがかかります。これは、一般的にカーネルトリックとして知られています。
MATLAB® では、次のカーネルに対応しています。
SVM の種類 | マーサーカーネル | 説明 |
---|---|---|
ガウス基底関数または放射基底関数 (RBF) | \(K(x_1,x_2) = \exp\left(-\frac{\|x_1 - x_2\|^2}{2\sigma^2}\right)\) | 1 クラス学習。\(\sigma\) はカーネルの幅 |
線形 | \(K(x_1,x_2) = x_1^{\mathsf{T}}x_2\) |
バイナリクラス学習。 |
多項式 | \(K(x_1,x_2) = \left( x_1^{\mathsf{T}}x_2 + 1 \right)^{\rho}\) |
\(\rho\) は多項式の次数 |
シグモイド | \(K(x_1,x_2) = \tanh\left( \beta_{0}x_1^{\mathsf{T}}x_2 + \beta_{1} \right)\) |
特定の \(\beta_{0}\) and \(\beta_{1}\) 値のみのマーサーカーネル |
サポートベクターマシンの学習は、クラス間のソフトマージンを最小化するような超平面をあてはめる 二次最適化問題を解くことに相当します。変換される特徴量の数は、サポートベクターの数によって決まります。
主なポイント:
- サポートベクターマシンは広く利用されており、多くの分類タスクや回帰タスクで優れた実績を上げています。
- サポートベクターマシンはバイナリ分類向けに定式化されていますが、複数のバイナリ分類器を組み合わせてマルチクラス SVM を構築します。
- カーネルによって SVM の柔軟性が高まり、非線形問題にも対応できます。
- 決定面を構築するのに必要なのは、学習データから選択されたサポートベクターのみです。一度学習すると、学習データの残りの部分は不要になるため、自動コード生成に適したコンパクトなモデルを表現できます。
例
サポートベクターマシンは異常検出にも使用できます。そのためには、決定境界で、外れ値のしきい値を使用してオブジェクトが「通常」クラスに属するかどうかを決定する 1 クラス SVM を構築します。この例では、MATLAB が、次のように、パラメーターとして外れ値の対象となる割合に基づき、すべてのデータを 1 つののクラスにマップします。。fitcsvm(sample,ones(…), ‘OutlierFraction’, …)
このグラフは、人間行動の分類タスクのデータの OutlierFractions
の範囲の分離超平面を示しています。
製品使用例および使い方
ソフトウェア リファレンス
参考: Statistics and Machine Learning Toolbox, 機械学習モデル, biomedical signal processing