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が正則化パラメーターである)の再パラメーター化であると述べられています。に精通している)-しかし、その再パラメータ化を実行する方法については述べていません。
公式と直感の両方が高く評価されます。
ありがとう!
パラメータCの問題は次のとおりです。
したがって、正しく選択することは困難であり、適切な値を見つけるには、相互検証または直接実験に頼る必要があります。
それに応じてSchölkopfetal。新しい正則化パラメーターnuを取るようにSVMを再定式化しました。このパラメーターは次のとおりです。
パラメータnuは、トレーニング例の総数に対するマージンエラーの割合の上限とサポートベクターの割合の下限です。たとえば、0.05に設定すると、トレーニング例の最大5%が誤分類され(ただし、わずかなマージンが犠牲になります)、トレーニング例の少なくとも5%がサポートベクターであることが保証されます。
Cとnuの関係は、次の式によって決まります。
nu = A+B/C
AとBは定数ですが、残念ながら計算はそれほど簡単ではありません。
重要なメッセージは、CとnuSVMは分類力に関して同等であるということです。 nuに関する正則化は、Cに比べて解釈が簡単ですが、nu SVMは通常、最適化が難しく、ランタイムは、入力サンプルの数が多いCバリアントと同様にスケーリングされません。
詳細(AとBの式を含む)はここにあります: Chang CC、Lin CJ-「nu-サポートベクター分類器のトレーニング:理論とアルゴリズム」
サポートベクターのnuはハイパーパラメーターです。
C-SVMで、ポイントxをクエリする場合q その後
∑α私.y私。バツ私T。バツq+ b for i = 1 to n
私たちが知っているようにα私 ゼロより大きいサポートベクトルおよび非サポートvecotrsαの場合私= 0。
したがってサポートベクターのみがf(xを計算するための問題です)q)、しかし通常のC-SVMではサポートベクターの数を制御できませんだからここにnu-SVMが来ます
nu:
サポートベクターの数の下限
nuは常に<= nu <= 1の間にあります
たとえば、nu = 0.1およびn = 10,0
1 .最大10%のエラーが必要 => 1000エラーポイント
2 .サポートベクター> = 1%を取得 => 1000を超えるサポートベクターを取得します。