AIの基礎

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

mm
Unite.AI を Google の優先ソースに追加

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

サポートベクターマシンは、機械学習分類器の一種であり、最も人気のある分類器のひとつである。サポートベクターマシンは、特に数値予測、分類、パターン認識タスクに役立つ。
サポートベクターマシンは、データポイント間の決定境界を描くことで動作し、データポイントをクラス(または最も一般化できるもの)に分割する決定境界を目指す。サポートベクターマシンを使用する際の目標は、データポイントと境界線之间の距離が最大化されるように、決定境界が可能な限り大きくなることである。これは、サポートベクターマシン(SVM)の動作についての簡単な説明ですが、SVMの動作とその背後にある論理についてより深く理解するために、時間をかけてみましょう。

サポートベクターマシンの目標

X軸とY軸によって指定された特徴に基づいて、グラフに多数のデータポイントがあるとします。グラフのデータポイントは、粗く2つの異なるクラスターに分割できます。クラスターに属するデータポイントは、データポイントのクラスを示します。ここで、2つのクラスを別々にするためにグラフに線を描きたいとします。線の1側に1つのクラスのすべてのデータポイントがあり、もう1側に別のクラスのすべてのデータポイントがあるという線です。この分離線は、ハイパープレーンとして知られています。

サポートベクターマシンを、都市を道路で分割して、道路の両側に地区を作るものと考えることができます。道路の1側にあるすべての建物(データポイント)は、1つの地区に属します。


サポートベクターマシンの目標は、データポイントを分割し、ハイパープレーンを描くことだけではありません。決定境界を最大の余地で描くことです。都市計画の例に戻ると、都市計画家が高速道路の計画を描く場合、高速道路が家や他の建物に近くないようにしたいとします。高速道路とその両側の建物之间の余地が大きいほど、分類器はその予測についてより自信を持つことができます。二項分類の場合、正しいハイパープレーンを描くことは、2つのクラスの真ん中にあるハイパープレーンを選択することを意味します。決定境界/ハイパープレーンが1つのクラスから遠ければ、別のクラスに近くなります。したがって、ハイパープレーンは2つのクラス之间の余地をバランスさせる必要があります。

分離ハイパープレーンの計算

サポートベクターマシンは、どのようにして最適な分離ハイパープレーン/決定境界を決定しますか?これは、数学の式を使用して可能なハイパープレーンを計算することによって実現されます。ハイパープレーンを計算する式については、ここでは詳細に説明しませんが、有名な傾き/線の式を使用して線が計算されます。
Y = ax + b

一方、線は点で構成されており、任意のハイパープレーンは、モデル内の重みと特徴のセットによって決定されるオフセット/バイアス(「d」)で修正された特徴のセットによって決定される点のセットとして説明できます。

SVMは多数のハイパープレーンを描きます。たとえば、境界線は1つのハイパープレーンですが、分類器が考慮するデータポイントもハイパープレーン上にあります。Xの値は、データセット内の特徴に基づいて決定されます。たとえば、多数の人の身長と体重のデータセットがある場合、身長と体重の特徴は、Xを計算するために使用される特徴になります。提案されたハイパープレーンとその両側にある「サポートベクタ」(データポイント)之间の余地は、次の式を使用して計算されます。
W * X – b

SVMの数学についてより詳しく知りたい場合は、詳細を参照してくださいが、直感的な理解を求めている場合は、目的が提案された分離ハイパープレーン/境界線とそれに平行する他のハイパープレーン(およびデータポイントが存在するハイパープレーン)之间の距離を最大化することであることを知っておくだけで十分です。

ZackWeinberg via Wikimedia Commons、CC BY SA 3.0(https://commons.wikimedia.org/wiki/File:Svm_separating_hyperplanes_(SVG).svg)

マルチクラス分類

ここまで説明したプロセスは、2項分類タスクに適用されます。ただし、SVM分類器は、2項以外の分類タスクにも使用できます。3つ以上のクラスを持つデータセットでSVM分類を実行する場合、データポイントをクラスに分割するために複数の境界線が使用されます。たとえば、分類タスクに3つのクラスがある場合、2つの境界線が使用され、1つのクラスの領域は2つの境界線之间にあります。決定境界と2つのクラス之间の距離を計算するのではなく、分類器はデータセット内の複数のクラス之间の余地を考慮する必要があります。

非線形分離

上記のプロセスは、データが線形に分離可能な場合に適用されます。ただし、実際のデータセットはほとんど完全に線形に分離可能ではありません。つまり、SVM分類器を使用する場合、2つの異なるテクニック、ソフトマージンとカーネルトリックを使用する必要があります。異なるクラスのデータポイントが混在し、1つのクラスのインスタンスが別のクラスの「クラスター」内にある状況を考えてみましょう。分類器はこれらのインスタンスをどのように処理することができますか?

非線形に分離可能なデータセットを処理するために使用できる戦略の1つは、ソフトマージンSVM分類器を適用することです。ソフトマージン分類器は、少しの誤分類を許容します。クラスター内のデータポイントの多数を含むクラスに属するデータポイントのクラスターを最もよく分割する線を描くことを試みます。ソフトマージンSVM分類器は、分類器の2つの要求、精度と余地のバランスをとる決定境界を作成することを試みます。誤分類を最小限に抑えながら余地を最大化することを試みます。

SVMの誤差の許容度は、ハイパーパラメータ「C」の操作によって調整できます。C値は、分類器が決定境界を描く際に考慮するサポートベクタの数を制御します。C値は、誤分類に対する罰です。つまり、C値が大きいほど、分類器が考慮するサポートベクタが少なく、余地が狭くなります。

カーネルトリックは、データを非線形的に変換します。Shiyu Ju via Wikmedia Commons、CC BY SA 4.0(https://commons.wikimedia.org/wiki/File:Kernel_trick_idea.svg)

カーネルトリックは、データセット内の特徴に非線形数学関数を適用することによって機能します。カーネルトリックは、データセット内の既存の特徴を取り込み、非線形数学関数を適用して新しい特徴を作成します。カーネルトリックの適用により、非線形決定境界が生成され、サポートベクタの真の分布をよりよく捉え、誤分類を最小限に抑えることができます。SVMの最も人気のある非線形カーネルの2つは、ラジアルベイス関数と多項式関数です。多項式関数は、既存の特徴のすべての組み合わせを生成しますが、ラジアルベイス関数は、中央点/点からすべての他の点までの距離を測定して新しい特徴を生成します。

ブログ作家およびプログラマーで、 Machine Learning Deep Learning のトピックを専門としています。Danielは、AIの力を社会のために利用する手助けを他者に与えることを希望しています。