SVM – ハードマージンまたはソフトマージン?

SVM – ハードマージンまたはソフトマージン?

タグ:


質問

線形分離可能なデータセットが与えられた場合、ソフトマージンSVM上でハードマージンSVMを使用する方が良いでしょうか?

ベストアンサー

トレーニングデータセットが線形に分離可能であっても、soft-margin SVMが優れていると思います。その理由は、ハードマージンSVMでは、単一のアウトリエが境界を決定できるため、クラシファイアはデータ内のノイズに過度に敏感になります。

下の図では1つの赤い外面が 本質的に境界を決定します これはオーバーフィッティングの極印です

soft-margin SVM が何をしているのかを知るには、それがハードマージン SVM と同じマージン最大化目的(マージンが負である可能性があります)を持っていることがわかりますが、サポートベクトルに関連付けられた各ラグレンジマルチプリエータがCによって制限されているという追加の制約があります。これは、決定境界に対する任意の単一点の影響を制限します。派生については、Cristianini/Shaw-TaylorのProposition

その結果、soft-margin SVMは、データセットが線形に分離可能であっても、非ゼロトレーニングエラーを持つ決定境界を選択でき、オーバーフィットする可能性は低くなります。

ここでは、合成問題にlibSVMを使用する例を示します。丸で囲まれた点はベクトルをサポートしています。あなたは、Cを減らすと、クラシファイアが安定性を得るために線形分離可能性を犠牲にすることがわかります。

サポートベクトルの意味:

ハードマージンSVMの場合、サポートベクトルは「マージン上」のポイントです。上記の図では、C = 1000はハードマージンSVMにかなり近く、丸い点がマージンに触れる点であることがわかります(マージンはその画像ではほぼ0なので、分離ハイパープレーンと本質的に同じです)

soft-margin SVMの場合、二重変数の点でそれらを説明するのは簡単です。デュアル変数の点でのサポートベクトルプリディクタは次の関数です。

ここで、alphasとbはトレーニング手順中に見つかったパラメータです。xi、yiはトレーニングセットであり、xは新しいデータポイントです。サポートベクトルは、プレディクタに含まれるトレーニングセットのデータポイントです。つまり、非ゼロアルファパラメータを持つものです。





source
ソフトウェアスレッドとハードウェアスレッド
SVM – 機能的マージンとは何ですか?
Z3のソフト/ハード制約
ハードラップとソフトラップの違いは?
ハードタブとソフトタブは何ですか?
Linuxでの「ソフト/ハードnofile」の意味
ハードリアルタイム、ソフトリアルタイム、強固なリアルタイムの違いは?
PowerShellを使用したハードリンクとソフトリンクの作成
Pythonを使用した線形サポートベクターマシンのソフトマージン
最初の印刷のみのハードマージンに関する奇妙な印刷の問題(WinForms)
Rating