scikit-Learn的SVM类中nu参数的含义是什么?

Guy*_*ini 24 python machine-learning scikit-learn

我遵循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的重新参数化(这是我熟悉的正则化参数) - 但是没有没有说明如何执行重新参数化.

公式和直觉都将受到高度赞赏.

谢谢!

Ber*_*ler 47

C的问题和nu的引入

参数C的问题是:

  1. 它可以带来任何正面价值
  2. 它没有直接的解释.

因此很难正确选择,人们不得不求助于交叉验证或直接实验来找到合适的价值.

作为回应Schölkopf等人.重新构造SVM以采用新的正则化参数nu.这个参数是:

  1. 界限在0和1之间
  2. 有一个直接的解释

解读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 - "训练nu-支持向量分类器:理论和算法"

  • “你得到保证”并不是严格正确的,因为 nu 是像你写的那样的界限。事实上,这只适用于 nu 在其允许区间内(参见 Appl. Stochastic Models Bus. Ind., 2005; 21:111–136 第 123 页)。另一个问题是,在同一参考文献的图5中,nu和C之间的关系并不像您引用的那样。这个答案应该是合格的。PS:我有兴趣知道在 1 类 SVM 的情况下这个间隔是多少:在我引用的参考文献中,命题 3 p。126 仅给出 nu 的 2 类 SVM 允许区间。 (2认同)