見出し画像

scikit-learn機械学習㉒SVM理論1:マージンの最大化

前回は、scikit-learnのk-NN(KNeighborsClassifier)を使った分類の実験を行いました。今回から、数回の記事に分けてサポート・ベクトル・マシン(Support Vector Machine、SVM)による分類の理論を解説します。

「サポート・ベクター・マシン」とも表記します。どちらかというとその方が多い気がします。しかし、他の文脈では「vector」をベクトルと訳すことが多いので「サポート・ベクトル・マシン」を使っています。

どちらでも良いのですが、「猫」のことを同じ記事の中で「キャット」と呼んだり「キャッツ」と言っているみたいなので統一してみました。

なお、SVMの文脈では、ベクトルはデータポイントのことです。

今回は、マージンの最大化による分類について紹介します。また、サポート・ベクトルとは何かなど関連する概念について解説します。

そのために具体例としてデータを2つのクラスに分類することを考えます。

下図を見て下さい。

2つのクラスがある2次元のデータ

各データポイントは$${(x_1, x_2)}$$と2つの値を持つベクトルとして表現されています。また、データはクラス1(赤)とクラス2(青)に分かれています。

この2つのクラスに属するデータを分けることを考えます。下図のように線を引いてみました。

試しに線を引いて分けてみる

この境界線を使うとデータポイントをクラス1と2に分けることができています。

でもこれって最適な境界線でしょうか。

他にも下図のように境界線を引くこともできます。

他の境界線もある

実際、たくさんの境界線が考えられます。

境界線は無数にある!

どれもデータポイントを2つのクラスに分けています。

上図のデータポイントが訓練データだとしたら、どの境界線を使っても大丈夫そうですが、どうでしょうか。

仮にテストデータとして以下の星マークの点があったとします。

テストデータを正しく分類できるか

このテストデータがクラス1であるかクラス2であるかによって、どの境界線が有効なのかが変わってきます。しかし、テストデータを使ってモデルの学習をするわけにはいきません。

ではどうしましょうか。


ここから先は

7,340字 / 10画像

キカベン・読み放題

¥1,000 / 月
初月無料
このメンバーシップの詳細

この記事が気に入ったらチップで応援してみませんか?