1

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

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

有人知道这些不同的值代表什么吗?

4

2 回答 2

10

它们是 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 不同)。

一类 SVM 是新颖性检测。不是二元分类或预测一个值,而是给 SVM 一个训练集,它会尝试训练一个模型来环绕该集,以便将来的实例可以分类为类的一部分或类外(新颖或异常值)。

于 2012-05-09T22:14:28.950 回答
6

一般来说:

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

详细信息可以在页面SVM上找到

于 2010-08-05T16:18:49.343 回答