【问题标题】:What is the OpenCV svm type parameterOpenCV svm 类型参数是什么
【发布时间】:2012-05-10 06:14:28
【问题描述】:
opencv SVM 实现采用标记为“SVM 类型”的参数,该参数必须在用于训练 SVM 的 CVSVMParams 结构中使用。我能找到的所有解释是:
// SVM type
enum { C_SVC=100, NU_SVC=101, ONE_CLASS=102, EPS_SVR=103, NU_SVR=104 };
有人知道这些不同的值代表什么吗?
【问题讨论】:
标签:
opencv
machine-learning
svm
【解决方案1】:
它们是 SVM 的不同表述。 SVM 的核心是一个数学优化问题。这个问题可以用不同的方式来表述。
C-SVM 使用 C 作为边距大小和错误分类的训练点数之间的权衡参数。 C 只是一个数字,有用的范围取决于数据集,它的范围可以从非常小(如 10-5)到非常大(如 10^5),具体取决于您的数据。
nu-SVM 使用 nu 代替 C。nu 大约是训练点的百分比,最终将作为支持向量。支持向量越多,margin 越大,错误分类的训练点就越多。 nu 范围从 0.1 到 0.8 - 在 0.1 时,大约 10% 的训练点将是支持向量,在 0.8 时,更像是 80%。我说粗略是因为它只是以这种方式相关 - 它并不精确。
epsilon-SVR 和 nu-SVR 使用 SVM 进行回归。不是通过找到最大边距超平面来进行二元分类,而是使用该概念来找到最适合数据的超管,以便用它来预测未来的模型。它们的参数化方式不同(如 nu-SVM 和 C-SVM 不同)。
One-Class SVM 是新颖性检测。不是二元分类或预测一个值,而是给 SVM 一个训练集,它会尝试训练一个模型来环绕该集,以便将来的实例可以分类为类的一部分或类外(新颖或异常值)。
【解决方案2】:
一般:
- 分类 SVM 类型 1(也称为 C-SVM 分类)
- 分类 SVM 类型 2(也称为 nu-SVM 分类)
- 回归 SVM 类型 1(也称为 epsilon-SVM 回归)
- 回归 SVM 类型 2(也称为 nu-SVM 回归)
详情可见页面SVM