あなたは悪い終わりから始めようとしていると思います。SVMを使用するために知っておくべきことは、このアルゴリズムが、2つのクラスを最適に分離する属性のハイパースペースでハイパープレーンを見つけることです。クラス間のマージンが最大の最良の手段です。次のような有名な写真で示されているように、全体の写真をぼかします:
現在、いくつかの問題が残っています。
まず第一に、異なるクラスのポイントのクラウドの中心に恥知らずに横たわっているこれらの厄介な外れ値はどうでしょうか?
この目的のために、オプティマイザは特定のサンプルに誤ったラベルを付けたままにして、そのような例のそれぞれを罰することができます。多目的最適化を回避するために、誤ってラベル付けされたケースに対するペナルティは、これらの目的間のバランスを制御する追加のパラメーターCを使用してマージンサイズとマージされます。
次に、問題が線形ではなく、適切な超平面が見つからない場合があります。ここでは、カーネルのトリックを紹介します-元の非線形空間を、より多くの追加パラメーターによって定義される非線形変換を使用して、より高次元の空間に投影し、結果の空間で問題がプレーンに適していることを期待SVM:
繰り返しますが、いくつかの数学を使用すると、オブジェクトのドット積をいわゆるカーネル関数で置き換えることにより目的関数を変更することにより、この変換手順全体をエレガントに隠すことができます。
最後に、これはすべて2つのクラスで機能し、3つのクラスがあります。それをどうするか?ここでは、3つの2クラス分類子(座っている-座っていない、立っている-立っていない、歩く-歩いていない)を作成し、分類でそれらを投票と組み合わせます。
さて、問題は解決したように見えますが、カーネルを選択し(ここでは直観的に相談し、RBFを選択します)、少なくともいくつかのパラメーター(C +カーネル)に適合させる必要があります。そして、例えば交差検定からの誤差近似など、オーバーフィットに対して安全な目的関数が必要です。そのため、コンピューターで作業を続け、コーヒーを飲み、戻って、最適なパラメーターがあることを確認します。すばらしいです!ここで、ネストされた交差検証を開始して、エラー近似と出来上がりを取得します。
もちろん、この簡単なワークフローはあまりにも単純化されているため、完全に正しいとは言えませんが、まずパラメーターに依存しないネイティブマルチクラスであるランダムフォレストを試してみるべき理由を示しています。 。