サポートベクターマシンの理解を手伝ってください


76

入力セットをいくつかの異なるクラスに分類するという点で、サポートベクターマシンの目的の基本は理解していますが、理解していないのは本質的な詳細の一部です。まず、Slack Variablesの使用に少し混乱しています。彼らの目的は何ですか?

靴の中敷に置いたセンサーから圧力の測定値を取得する分類問題を行っています。被験者は、圧力データが記録されている間、数分間座り、立ち、歩きます。人が座っているか、立っているか、歩いているかを判断できるように分類器をトレーニングし、将来のテストデータでそれを実行できるようにします。どの分類器タイプを試す必要がありますか?キャプチャしたデータから分類器をトレーニングする最良の方法は何ですか?座ったり、立ったり、歩いたりするためのエントリが1000個あり(合計3x1000 = 3000)、それらはすべて次の特徴ベクトル形式を持っています。(センサー1からの圧力、センサー2からの圧力、センサー3からの圧力、センサー4からの圧力)


回答:


103

あなたは悪い終わりから始めようとしていると思います。SVMを使用するために知っておくべきことは、このアルゴリズムが、2つのクラスを最適に分離する属性のハイパースペースでハイパープレーンを見つけることです。クラス間のマージンが最大の最良の手段です。次のような有名な写真で示されているように、全体の写真をぼかします: 代替テキスト

現在、いくつかの問題が残っています。
まず第一に、異なるクラスのポイントのクラウドの中心に恥知らずに横たわっているこれらの厄介な外れ値はどうでしょうか?
代替テキスト
この目的のために、オプティマイザは特定のサンプルに誤ったラベルを付けたままにして、そのような例のそれぞれを罰することができます。多目的最適化を回避するために、誤ってラベル付けされたケースに対するペナルティは、これらの目的間のバランスを制御する追加のパラメーターCを使用してマージンサイズとマージされます。
次に、問題が線形ではなく、適切な超平面が見つからない場合があります。ここでは、カーネルのトリックを紹介します-元の非線形空間を、より多くの追加パラメーターによって定義される非線形変換を使用して、より高次元の空間に投影し、結果の空間で問題がプレーンに適していることを期待SVM:

代替テキスト

繰り返しますが、いくつかの数学を使用すると、オブジェクトのドット積をいわゆるカーネル関数で置き換えることにより目的関数を変更することにより、この変換手順全体をエレガントに隠すことができます。
最後に、これはすべて2つのクラスで機能し、3つのクラスがあります。それをどうするか?ここでは、3つの2クラス分類子(座っている-座っていない、立っている-立っていない、歩く-歩いていない)を作成し、分類でそれらを投票と組み合わせます。

さて、問題は解決したように見えますが、カーネルを選択し(ここでは直観的に相談し、RBFを選択します)、少なくともいくつかのパラメーター(C +カーネル)に適合させる必要があります。そして、例えば交差検定からの誤差近似など、オーバーフィットに対して安全な目的関数が必要です。そのため、コンピューターで作業を続け、コーヒーを飲み、戻って、最適なパラメーターがあることを確認します。すばらしいです!ここで、ネストされた交差検証を開始して、エラー近似と出来上がりを取得します。

もちろん、この簡単なワークフローはあまりにも単純化されているため、完全に正しいとは言えませんが、まずパラメーターに依存しないネイティブマルチクラスであるランダムフォレストを試してみるべき理由を示しています。 。


5
(+1)全体を説明するために写真を追加するのは素晴らしいことです!
chl

3
@mbqあなたはSVMに非常に有能であると思われるので、私の疑問を明確にするようお願いします。最高の分離超平面を見つけたら、それを何に使うのですか SVMは、最初にデータポイントを正しく分類するために最適な超平面を選択し、次に、この超平面を使用して2つのクラスの新しいデータポイントを切断する方法として定義できます。右?(私は2番目の部分にいくつかの疑問があります)
DavideChicco.it

3
@ DavideChicco.it基本的に、ML全体の中心的な問題は、新しいデータを確実に予測するモデルを作成することです。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.