opencv SVM实现采用标记为“SVM类型”的参数,该参数必须在训练SVM时使用的CVSVMParams结构中使用。我能找到的所有解释都是:
// SVM type
enum { C_SVC=100, NU_SVC=101, ONE_CLASS=102, EPS_SVR=103, NU_SVR=104 };
任何人都知道这些不同的值代表什么?
答案 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页