我遵循http://scikit-learn.org/stable/auto_examples/svm/plot_oneclass.html#example-svm-plot-oneclass-py中显示的示例,其中使用一类SVM进行异常检测。
现在,这可能是scikit-learn特有的一种表示法,但是我找不到如何使用提供给OneClassSVM构造函数的参数nu的解释。

http://scikit-learn.org/stable/modules/svm.html#nusvc中,声明参数nu是参数C(这是我熟悉的正则化参数)的重新参数化-但未说明如何执行该重新参数化。

公式和直觉都将不胜感激。

谢谢!

最佳答案

C的问题和nu的引入

参数C的问题是:

  • 可以采用任何正值
  • 它没有直接解释。

  • 因此,很难正确选择,并且必须求助于交叉验证或直接实验以找到合适的值。

    作为回应,Schölkopf等。重新构造的SVM采用新的正则化参数nu。
    该参数是:
  • 介于0和1之间
  • 具有直接解释

  • nu的解释

    相对于训练样本总数,参数nu是余量误差分数的上限,是支持向量分数的下限。例如,如果将其设置为0.05,则可以确保找到最多5%的训练示例被错误分类(尽管代价不高),并且至少有5%的训练示例是支持向量。

    C和nu之间的关系

    C和nu之间的关系由以下公式控制:
    nu = A+B/C
    A和B是常数,不幸的是该常数不容易计算。

    结论

    外卖消息是C和nu SVM在分类能力上是等效的。与C相比,以nu表示的正则化更易于解释,但nu SVM通常更难优化,并且运行时不像在C变体中那样随输入样本数量而扩展。

    可以在这里找到更多详细信息(包括A和B的公式):Chang CC, Lin CJ - "Training nu-support vector classifiers: theory and algorithms"

    关于python - Scikit-Learn的SVM类中nu参数的含义是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11230955/

    10-12 22:07