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

サポートベクターマシンとは何か?
サポートベクターマシンは、機械学習分類器の一種であり、最も人気のある分類器のひとつである。サポートベクターマシンは、特に数値予測、分類、パターン認識タスクに有用である。
サポートベクターマシンは、データポイント間に決定境界を描くことで動作し、データポイントをクラス(または最も一般化されたもの)に分離する決定境界を目指す。サポートベクターマシンを使用する際の目標は、決定境界が可能な限り大きく、任意のデータポイントと境界線之间の距離が最大化されることである。これは、サポートベクターマシン(SVM)の動作についての簡単な説明ですが、SVMの動作とその背後にある論理についてより深く掘り下げてみましょう。
サポートベクターマシンの目標
X軸とY軸によって指定された特徴に基づいて、グラフに数多くのデータポイントがあるとします。グラフ上的のデータポイントは、2つの異なるクラスタに大まかに分けることができます。データポイントが属するクラスタは、データポイントのクラスを示します。ここで、クラスを互いに分離するグラフ上の線を描きたいとします。1つのクラスのすべてのデータポイントは、線の1つの側にあり、もう1つのクラスのすべてのデータポイントは、線の反対側にあります。この分離線は、ハイパープレーンとして知られています。
サポートベクターマシンを、都市を地区に分ける「道路」を作成するものとして考えることができます。道路の1つの側に位置するすべての建物(データポイント)は、1つの地区に属します。

サポートベクターマシンの目標は、単にハイパープレーンを描くことやデータポイントを分割することだけではなく、データポイントと分離線之间の最大の余地を持つハイパープレーンを描くことです。「道路」の比喩に戻ると、都市計画家が高速道路の計画を描く場合、高速道路が家や他の建物に近すぎないようにしたいとします。高速道路と両側の建物之间の余地が大きいほど、分類器は予測についてより「自信」を持つことができます。二項分類の場合、正しいハイパープレーンを描くことは、2つのクラスのちょうど中間にハイパープレーンを選択することを意味します。決定境界/ハイパープレーンが1つのクラスから遠ざかると、別のクラスに近づきます。したがって、ハイパープレーンは2つのクラス之间の余地をバランスさせる必要があります。
分離ハイパープレーンの計算
サポートベクターマシンは、どのようにして最適な分離ハイパープレーン/決定境界を決定しますか?これは、数学的な式を使用して可能なハイパープレーンを計算することで実現されます。ハイパープレーンを計算する式については、詳細についてはここで説明しませんが、線は有名な傾き/線式で計算されます。
Y = ax + b
一方、線は点で構成されており、任意のハイパープレーンは、モデル重みと特徴のセットによって決定される、提案されたハイパープレーンに平行する点のセットとして記述できます。
SVMは多くのハイパープレーンを描きます。たとえば、境界線は1つのハイパープレーンですが、分類器が考慮するデータポイントもハイパープレーン上にあります。Xの値は、データセット内の特徴に基づいて決定されます。たとえば、多くの人の身長と体重のデータセットがある場合、特徴「身長」と「体重」は、Xを計算するために使用される特徴になります。提案されたハイパープレーンと、分離ハイパープレーンの両側にある「サポートベクター」(データポイント)之间の余地は、次の式で計算されます。
W * X – b
SVMの背後にある数学についてより詳細に知りたい場合は、こちらを参照してください。ただし、SVMについてより直感的な理解を求めている場合は、目標は、提案された分離ハイパープレーン/境界線と、それに平行するハイパープレーン(およびデータポイントが存在するハイパープレーン)之间の距離を最大化することであることを知っておくだけで十分です。

Photo: 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つのクラスを構成する領域は、1つの境界線ではなく、2つの境界線之间に存在します。決定境界と2つのクラス之间の距離を計算するのではなく、分類器はデータセット内の複数のクラス之间の決定境界と余地を考慮する必要があります。
非線形分離
上記のプロセスは、データが線形に分離可能な場合に適用されます。ただし、現実のデータセットはほとんど完全に線形に分離可能ではありません。つまり、SVM分類器を使用する場合、2つの異なるテクニック、ソフトマージンとカーネルトリックを使用する必要があります。異なるクラスのデータポイントが混在している状況を考えてみましょう。いくつかのインスタンスは1つのクラスに属しているのに、別のクラスの「クラスタ」の中にあります。分類器はこれらのインスタンスをどのように処理するでしょうか?
非線形に分離可能なデータセットを処理するために使用できる戦略の1つは、「ソフトマージン」SVM分類器の適用です。ソフトマージン分類器は、少しの誤分類を受け入れることで動作します。クラスタ内のデータポイントのほとんどのインスタンスが属するクラスを分離する線を描こうとします。ソフトマージンSVM分類器は、分類器の2つの要求、精度と余地のバランスをとる決定境界を描こうとします。誤分類を最小限に抑えると同時に余地を最大化しようとします。
SVMの誤差の許容度は、ハイパーパラメータ「C」の操作を通じて調整できます。C値は、分類器が決定境界を描く際に考慮するサポートベクターの数を制御します。C値は、誤分類に対するペナルティであり、C値が大きいほど、分類器が考慮するサポートベクターが少なくなり、余地が狭くなります。

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












