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

我正在参考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. 它没有直接的解释。

因此,选择正确的C值非常困难,必须通过交叉验证或直接实验来找到合适的值。

作为回应,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”

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注