web-dev-qa-db-ja.com

Scikit-LearnのSVMクラスのnuパラメーターの意味は何ですか?

http://scikit-learn.org/stable/auto_examples/svm/plot_oneclass.html#example-svm-plot-oneclass-py に示す例に従っています。ここで、1つのクラスのSVMは異常検出に使用されます。さて、これはscikit-learnに固有の表記法かもしれませんが、OneClassSVMコンストラクターに与えられたパラメーターnuの使用方法の説明が見つかりませんでした。

http://scikit-learn.org/stable/modules/svm.html#nusvc では、パラメーターnuはパラメーターC(これはIが正則化パラメーターである)の再パラメーター化であると述べられています。に精通している)-しかし、その再パラメータ化を実行する方法については述べていません。

公式と直感の両方が高く評価されます。

ありがとう!

24
Guy Adini

Cの問題とnuの導入

パラメータCの問題は次のとおりです。

  1. 正の値を取ることができること
  2. 直接的な解釈はありません。

したがって、正しく選択することは困難であり、適切な値を見つけるには、相互検証または直接実験に頼る必要があります。

それに応じてSchölkopfetal。新しい正則化パラメーターnuを取るようにSVMを再定式化しました。このパラメーターは次のとおりです。

  1. 0と1の間に制限
  2. 直接解釈があります

Nuの解釈

パラメータnuは、トレーニング例の総数に対するマージンエラーの割合の上限とサポートベクターの割合の下限です。たとえば、0.05に設定すると、トレーニング例の最大5%が誤分類され(ただし、わずかなマージンが犠牲になります)、トレーニング例の少なくとも5%がサポートベクターであることが保証されます。

Cとnuの関係

Cとnuの関係は、次の式によって決まります。

nu = A+B/C

AとBは定数ですが、残念ながら計算はそれほど簡単ではありません。

結論

重要なメッセージは、CとnuSVMは分類力に関して同等であるということです。 nuに関する正則化は、Cに比べて解釈が簡単ですが、nu SVMは通常、最適化が難しく、ランタイムは、入力サンプルの数が多いCバリアントと同様にスケーリングされません。

詳細(AとBの式を含む)はここにあります: Chang CC、Lin CJ-「nu-サポートベクター分類器のトレーニング:理論とアルゴリズム」

50

サポートベクターのnuはハイパーパラメーターです。

C-SVMで、ポイントxをクエリする場合q その後

∑α.y。バツT。バツq+ b for i = 1 to n

私たちが知っているようにα ゼロより大きいサポートベクトルおよび非サポートvecotrsαの場合= 0。

したがってサポートベクターのみがf(xを計算するための問題です)q、しかし通常のC-SVMではサポートベクターの数を制御できませんだからここにnu-SVMが来ます

nu:

  1. エラー数の上限
  2. サポートベクターの数の下限

    nuは常に<= nu <= 1の間にあります

たとえば、nu = 0.1およびn = 10,0

1 .最大10%のエラーが必要 => 1000エラーポイント
2 .サポートベクター> = 1%を取得 => 1000を超えるサポートベクターを取得します。

0
Ravi G