現在、線形カーネルを備えたSVMを使用してデータを分類しています。トレーニングセットにエラーはありません。パラメーターいくつかの値 (10 − 5、… 、10 2)を試しました。これは、テストセットのエラーを変更しませんでした。
今私は疑問に思う:これは誤りであるルビーのバインディングによって引き起こされるためにlibsvm
、私は(使用しているRB-LIBSVMを)か、これは理論的に説明できますか?
パラメーター常に分類器のパフォーマンスを変更する必要がありますか?
現在、線形カーネルを備えたSVMを使用してデータを分類しています。トレーニングセットにエラーはありません。パラメーターいくつかの値 (10 − 5、… 、10 2)を試しました。これは、テストセットのエラーを変更しませんでした。
今私は疑問に思う:これは誤りであるルビーのバインディングによって引き起こされるためにlibsvm
、私は(使用しているRB-LIBSVMを)か、これは理論的に説明できますか?
パラメーター常に分類器のパフォーマンスを変更する必要がありますか?
回答:
Cパラメーターは、各トレーニング例の誤分類を回避したい量をSVM最適化に伝えます。Cの値が大きい場合、その超平面がすべてのトレーニングポイントを正しく分類するのにより良い仕事をする場合、最適化はマージンの小さい超平面を選択します。逆に、Cの値が非常に小さいと、オプティマイザーは、その超平面がより多くのポイントを誤分類した場合でも、より大きなマージンの分離超平面を探します。Cの非常に小さな値の場合、トレーニングデータが線形に分離可能である場合でも、誤分類された例を取得する必要があります。
SVMでは、2つのことを検索しています:最小マージンが最大の超平面と、できるだけ多くのインスタンスを正しく分離する超平面。問題は、常に両方を手に入れることができるとは限らないことです。cパラメーターは、後者に対する希望の大きさを決定します。これを説明するために、以下に簡単な例を示しました。左側には低いcがあり、かなり大きな最小マージン(紫色)が得られます。ただし、これには、正しい分類に失敗した青い円の外れ値を無視する必要があります。右側に高いcがあります。これで、外れ値を無視しないため、マージンがはるかに小さくなります。
これらの分類器のうち、どれが最適ですか?それは、予測する将来のデータがどのようなものかによって異なり、ほとんどの場合、もちろんそれを知りません。将来のデータが次のようになっている場合:
次に、大きなc値を使用して学習した分類器が最適です。
一方、将来のデータが次のようになっている場合:
次に、低いc値を使用して学習した分類器が最適です。
データセットに応じて、cを変更すると異なる超平面が生成される場合と生成されない場合があります。それは場合はありません別の超平面を生成、それはあなたの分類器は、出力の異なるクラスは、特定のデータのためにあなたが分類するのにそれを使用しているだろうことを意味するものではありません。Wekaは、データを視覚化し、SVMのさまざまな設定を操作するための優れたツールです。データがどのように見えるか、またc値を変更しても分類エラーが変わらない理由を理解するのに役立つ場合があります。一般に、トレーニングインスタンスが少なく、属性が多いと、データの線形分離が容易になります。また、トレーニングデータを評価しており、新しい未観測データを評価していないという事実により、分離が容易になります。
モデルをどのようなデータから学習しようとしていますか?データ量 見えますか?
Cは基本的に正則化パラメーターであり、トレーニングデータの低エラーを達成することと重みのノルムを最小化することとのトレードオフを制御します。これは、リッジ回帰のリッジパラメーターに類似しています(実際、実際には線形SVMとリッジ回帰のパフォーマンスや理論にはほとんど違いがないため、通常は後者を使用します-観測よりも属性が多い場合はカーネルリッジ回帰を使用します)。
Cのチューニングは、構造的リスクの最小化(基本的なアプローチの背後にある重要な原則)がCのチューニングを通じて実装されるため、SVMの使用におけるベストプラクティスの重要なステップです。パラメーターCは、重み。これは、Cでインデックス付けされた仮説クラスのネストされたセットがあることを意味します。Cを増やすと、仮説クラスの複雑さが増します(Cを少し増やすと、前にできる線形モデルをすべて形成できますまた、重みの許容基準の上限を引き上げる前にできなかったものもあります)。したがって、最大マージン分類によるSRMの実装と同様に、Cの制御による仮説クラスの複雑さの制限によっても実装されます。
悲しいことに、Cの設定方法を決定する理論は現時点ではあまりよく発達していないので、ほとんどの人はクロスバリデーションを使用する傾向があります(何かを行う場合)。
Cは、低いトレーニングエラーと低いテストエラーとのトレードオフを制御する正則化パラメーターです。テストエラーは、分類器を不可視データに一般化する機能です。
線形SVMの目的関数を考えます:min | w | ^ 2 + C∑ξ。Cが大きすぎる場合、最適化アルゴリズムは| w |を削減しようとします。可能な限り各訓練例を正しく分類しようとする超平面につながります。これを行うと、分類器の一般化プロパティが失われます。一方、Cが小さすぎる場合、目的関数に特定の自由度を与えて| w |を増加させます。多くの場合、大きなトレーニングエラーが発生します。
以下の図は、これを視覚化するのに役立ちます。
上記の答えは素晴らしいです。あなたの質問を注意深く読んだ後、私たちが見落としていたかもしれない2つの重要な事実があることがわかりました。
2つの事実を考えると、C値が合理的な範囲内で変化する場合、最適な超平面はマージン(サポートベクトルによって形成されるギャップ)内でわずかにランダムにシフトします。
直観的には、トレーニングデータのマージンが小さく、および/またはマージン内にテストデータポイントがないと仮定すると、マージン内の最適な超平面のシフトはテストセットの分類エラーに影響しません。
それでも、C = 0に設定すると、SVMはエラーを無視し、weights(w)の2乗和を最小化しようとします。テストセットで異なる結果が得られる可能性があります。