サポートベクターマシンをExcelに実装して2クラス分類問題を解いてみた。前へ次へ検索RSSFeedlyホーム>Excelで機械学習>Excelで試してみるサポートベクターマシンをExcelに実装して2クラス分類問題を解いてみた。Udemyの関連講座リンクリンクサポートベクトルマシンで2クラス分類するような直線をExcelで計算する倉庫の中の従業員が熱射病になり易い条件を調べるために、次のようなデータを採りました。グラフにすると次のようになります。この点線は2つのクラスに分類するために管理人が勘で引いた境目ですが、サポートベクターマシンではどんな直線を出すのか試してみましょう。この計算をExcelでやってみます。ちなみにこの例は、単純パーセプトロンのアルゴリズムを試した時に使ったものと同じです。前回の記事で、サポートベクターマシンのアルゴリズムは次のような「制約条件付きの最小化問題」に帰着できることを解説しました。w2)を最小にするw1とw2が求まる。グループ1の際の点の座標をw1x+w2y+w0=1に代入することにより、w0も求まる。サポートベクターマシンの原理からラグランジュの未定乗数法適用までをわかりやすくここで更に一工夫加えます。w2)=1/2(w12+w22)としておいた方が便利です。することによって微分をすると∂f/∂w1=w1とか、∂f/∂w2=w2というように簡単になるからです。w2)=1/2(w12+w22)とします。「最大化問題」の双対問題に変換するこれから先のラグランジュの未定乗数法の式を更に簡単にしていきます。最初の3つの偏微分方程式を解くと、次のようになります。λnλntntn(xnxn+ynyn))w0とw1とw2が消えて、変数λiだけの式になります。この式は1/2(w12+w22)の最小値を求める式ですので、L≦1/2(w12+w22)の関係にあります。ここで、もしλiを動かしてLの最大値を求めることができれば、そのLの値が1/2(w12+w22)の最小値になります。λnλntntn(xnxn+ynyn))の最大値を求める問題に変換されました。+λntn=0の条件が入っていないので、これが制約条件として付きます)このように元の問題と同等の関係にある問題のことを双対問題といいます。双対問題の方が解きやすい場合があり、そのような時には双対問題に変換して解きます。これでサポートベクターマシンの問題が、コンピュータで数値計算し易い双対問題に変換できました。Excelで双対問題を解く変数のすべての組み合わせの積を計算する長い道のりでしたが、サポートベクターマシンのアルゴリズムは以下の問題まで簡略化されました。λnλntntn(xnxn+ynyn))の最大値を求める。nは今あるデータサンプル数です。教師データの数とも言えます。Lの式は複雑そうに見えますが、よく見るときれいな規則性があります。教師データから2つずつピックアップした組み合わせの掛け算です。今回の場合は15個の教師データがありますので、λ、t、x、yのそれぞれについて152=225通りの組み合わせがあります。大変な数ですが、Excelでやるとそうでもありません。以下のようにすれば、すべての組み合わせの掛け算が計算できます。クリックすると拡大しますクリックすると拡大しますクリックすると拡大しますクリックすると拡大しますクリックすると拡大します目的関数と制約条件を計算するここまで入力すれば、目的関数と制約条件の式を次のように入力できます。Excelソルバーで最適化するこの問題は、λ1からλ15を変えながら目的関数Lの最大値を求める最適化問題です。このような計算はExcelのソルバーが得意とするところです。下記のようにソルバーに設定します。クリックすると拡大しますこの段階でλ1からλ15には初期値として2が入力されています。「Solve(解決)」を押すと、λ1からλ15は次のように最適化されます。クリックすると拡大します最適解を解釈して直線の式を求めるλ1とλ9とλ11だけゼロ以外の値になりました。これは15個の教師データの中で、サポートベクターマシンが直線の式を決めるのに寄与したデータがこの3個だったということを意味しています。これら3個のデータの中間を通るような直線の式を作ったということです。従って、これら3点ではw1x+w2y+w0=1またはw1x+w2y+w0=-1の式が成り立ちます。–λntnyn=0の式から求められますので、w1とw2とw0は次のように求まります。これで2クラスに分ける直線の式が求まりました。グラフに描くとこのようになります。確かにきれいに2クラスに分類する直線を求めることができました。このように、サポートベクターマシンのアルゴリズムをExcelに実装することは難しくありません。このアルゴリズムを導くためにラグランジュの未定乗数法や双対問題を使っていて、理解するのに結構骨が折れます。「原理が分からずにアルゴリズムを使うのは気持ち悪い」という管理人のような人に、少しでも理解の足しになればと思います。AI数学-文系でも理解できる!高校から始めるデータ分析、AIのための数学-データ分析、機械学習に関わる数学に絞り、効率的に学習できるようカリキュラムを構成しました。文系でも理解できるよう丁寧な説明をしています。Pythonエンジニア育成推進協会認定スクールによる高品質な数学コースです。–1000人以上が受講している(株)キカガクの『脱ブラックボックスセミナー』が遂に登場!機械学習の参考書を「閉じてしまった人」への再入門に最適な講座です。微分・線形代数といった数学の基礎からPythonでの実装まで短時間で習得しましょう。永遠の旅人よろしければシェアお願いしますTwitterFacebookLinkedInB!HatenaLINELINE【カーネルトリック】非線形のサポートベクターマシンをExcelに実装してみた。...【ルーレットの赤黒ベット】100ドルの軍資金を200ドルに増やせる確率は?ルーレットの赤黒ベットは当たる確率がほぼ50%です。【区間推定の使い方】タイヤの摩耗を具体例にわかりやすく解説します。TOP28【作業分析6】MMCモデル|最適なトラックドック数をSimpyでシミュレーション【作業分析5】トラックの待機台数の多さを人の表情でアニメーション(2)カンボジアの物流でお困りのことがあればお気軽にご相談下さい。学生時代にアジアの雑踏にハマる。誰もが羨むメーカーを退職し「旅するように働く」ことを目指し物流業界に転職。理工学と経営学のダブル修士。2023年1月からカンボジアのオートレスビーチ在住。