什么是OpenCV svm类型参数

时间:2010-08-05 15:48:31

标签: opencv machine-learning svm

opencv SVM实现采用标记为“SVM类型”的参数,该参数必须在训练SVM时使用的CVSVMParams结构中使用。我能找到的所有解释都是:

// SVM type
enum { C_SVC=100, NU_SVC=101, ONE_CLASS=102, EPS_SVR=103, NU_SVR=104 };

任何人都知道这些不同的值代表什么?

2 个答案:

答案 0 :(得分:10)

它们是SVM的不同配方。 SVM的核心是数学优化问题。这个问题可以用不同的方式陈述。

C-SVM使用C作为边际大小与错误分类的训练点数之间的权衡参数。 C只是一个数字,有用的范围取决于数据集,它可以从非常小(如10-5)到非常大(如10 ^ 5),具体取决于您的数据。

nu-SVM使用nu代替C. nu大约是训练点的一部分,最终将作为支持向量。支持向量越多,您的保证金越宽,将被错误分类的训练点越多。 nu范围从0.1到0.8 - 在0.1左右,大约10%的训练点将是支持向量,为0.8,更像是80%。我粗略地说,因为它只是那种方式相关 - 它不准确。

epsilon-SVR和nu-SVR使用SVM进行回归。不是通过找到最大边缘超平面来进行二元分类,而是使用该概念来找到最适合数据的超高压管,以便用它来预测未来的模型。它们的参数化方式不同(如nu-SVM和C-SVM不同)。

One-Class SVM是新颖的检测。而不是二元分类或预测值,而是给SVM一个训练集,它试图训练一个模型来包裹该集合,以便将来的实例可以被分类为类的一部分或类外(小说或离群值)。

答案 1 :(得分:6)

一般来说:

  • 分类SVM类型1(也称为C-SVM分类)
  • 分类SVM类型2(也称为nu-SVM分类)
  • 回归SVM类型1(也称为epsilon-SVM回归)
  • 回归SVM类型2(也称为nu-SVM回归)

详情请参阅第SVM