C-SVM和nu-SVM有什么区别?


回答 1:

Scholkopf等人提出的nu-SVM具有使用参数nu控制支持向量数量的优势。普通SVM公式中的参数C替换为以0和1为边界的参数nu。早期,参数C可以取任何正值,因此此附加边界对实现有利。

参数nu表示分别为支持向量且位于超平面错误一侧的示例数量的上限和下限。

现在,尽管有了新的限制,但与C-SVM相比,nu-SVM相对较难优化,并且运行时通常不可扩展。


回答 2:

SVM使用超平面执行分类。使用SVM执行分类时,有2种类型的SVM

  • C SVMNu支持向量机

C和nu是正则化参数,有助于对分离类时执行的错误分类进行惩罚。因此有助于提高输出的精度。

C的范围是0到无穷大,可能很难估计和使用。对此的一种修改是引入了nu,该nu在0-1之间运行,代表了作为支持向量且位于超平面错误一侧的示例数量的上下限。

两者都有比较相似的分类能力,但是nu-SVM难以优化


回答 3:

这很大程度上是可解释性的问题。有人发现nu比C更容易解释。虽然nu的范围比C小(从0到无穷大),但是您仍然必须通过网格搜索正确的校正级别,并且超过一定点时,没有意义反正增加C。此外,C倾向于在对数刻度上进行测试,而选择nu则在线性刻度上。

就解决时间而言,SMO和变体应在大致相同的时间内解决。我不知道有一个开源的线性/原始nu-SVM解算器,因此在大于libsvm可以轻松处理的问题上使用nu-SVM是不利的一面(不过,编写一个起来也不难)。就是说,我已经测试了线性/原始C-SVM(使用Fourier / nystroem功能的sklearn SGD或线性SVC)与Libsvm的nu-SVM,发现单独使用libsvm通常是更好的选择(在准确性,灵活性和时间方面) 。我的问题是一个极不平衡的数据集,如果有帮助的话,它具有约20k个观测值,20-100个特征。