「最短ルートは?」で紹介した「Excelでわかる機械学習超入門」の本を基に「サポートベクターマシン(SVM)」を説明します。数学の「双対問題」という考え方を用いています。 これについては、私も初めてなので、後日調べて説明したいと思います。 最小解を算出する際に、範囲が指定されている場合に、最小解と範囲をしている不等号部分を合算して、その最大値を求めるというアルゴリズムです。
資料はこちら → SVM
p.1 左のグラフをご覧ください。男がax+by+c=ー1の直線の左側の領域、女はax+by+c=1の直線の右側の領域に分布するとします。これらの直線上にある点を「サポートベクター」と呼称します。予測に必要なベクトルを意味します。男と女を識別する直線ax+bx+c=0を求めます。この際に、マージンdを最大にします。この距離dは、右に書いておきます。分子は絶対値ですので、今回1となります。したがって、dが最大値のとき√a2+b2が最小になります。このときの範囲をt(ax+by+c)≧1とまとめて書きます。
p.2 a2+b2と不等式を合算したLについて偏微分して、Lが最小になるa及びbを求めます。この際に赤字の制約条件も得られます。次にこのa及びbをLに代入します。
p.3 a2+b2の前にマイナスがついているので、今度は最大になるLを求めます。
p.4 前ページまでの内容をExcelで計算します。 x、y、tのマトリックスを計算後、Lの式に代入します。ソルバーを立ち上げて(アドインされていない方は、Excekのファイルオプションで分析ツールと同様にアドインしてください)、「目的セル」にLのセル、「変化させるセル」はμのセル、最大値にチェック、「制約の条件」にはp.2の赤字の式を指定して計算させます。最初、μには適当な値を入れておきますが、ソルバー処理すると、別の値になります。
p.5 係数a、b及びcを順番に求めていきます。これで識別式が2x-2y-1=0と求めることができました。
pythonの「scikit-learn」を用いれば簡単にできるのですが、皆さんにはどのようなアルゴリズム、考え方で解析しているかの原理を知って欲しいのです。原理を知った上で、便利な道具を使って欲しいのです。統計ソフトのMinitabやRがありますが、先ずはExcel等で原理を知った上で使って欲しいと思います。ブラックボックスに入力して得られた数値を信用してもよいかを気にしてください。
pythonはいろいろ検索すればでてきます → https://qiita.com/kazuki_hayakawa/items/18b7017da9a6f73eba77
、