python - Scikit-Learn的SVM类中的nu参数是什么意思?

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

非常感谢公式和直觉。

谢谢!

最佳答案

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 - "Training nu-support vector classifiers: theory and algorithms"

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

相关文章:

python - 带有 uWSGI 的简单 Bottle 应用程序不工作(返回 404)

python - 特征提取自然语言处理

python-3.x - 在随机森林中使用predict()与predict_proba()计算时ROC_AUC_SCORE是不同的

python - 如何更改 K 均值聚类的特征权重?

Python numpy - DepricationWarning : Passing 1d arrays as data is deprecated

python - 是否可以将 python 对象(特别是 sklearn 模型)存储在内存映射文件中?

python - Python 3.x 中的 "Local variable ' name_variable ' value is not used"错误

Python:没有名为 'dash.development' 的模块。 'dash' 不是包

python - 在 n 个不相等的列表中找到最大值

python - 我如何知道数据拆分是在使用 scikit-learn 的缩放器之前还是之后完成的