1

SVM 中的成本参数 C 是什么意思?我的意思是,如果 C 很大,是否意味着“我不能容忍错误的分类”?

在实验中找到最佳参数时,如何确定范围和步长?

顺便问一下,决定哪个参数更好的标准是什么?交叉验证的错误数量或我们从 SVM 获得的支持向量的数量?

4

3 回答 3

2

什么是C?

SVM 训练解决的优化问题有两个术语:

  1. 一个有利于“更简单”权重的正则化术语
  2. 确保权重正确分类训练数据点的损失项。

C 只是这些对术语的重要性之间的平衡。如果 C 高,则对 (2) 给予很大的权重,如果 C 较低,则对 (1) 给予很大的权重。

如果我只是想要准确的结果,为什么不把 C 设置得很高呢?

术语 (1) 防止过度拟合(非常擅长对训练数据进行分类,但对未见过的测试数据进行分类非常糟糕)

好的,我只想要准确的结果,为什么我不把 C 设置得很低呢?

术语 (2) 确保训练优化关注训练数据,您不仅需要“简单”(在 L2 意义上)的权重,还需要正确分类训练数据的简单权重。

概括:

训练 SVM 是两个方面的平衡。C 是损失项相对于正则化项的相对重要性。

于 2013-06-18T20:14:59.940 回答
0

-C 表示您如何容忍分类错误(松弛变量)。为了找到更好的模型,我想我们必须设置一个大的阈值并进行交叉验证。

于 2013-06-18T20:03:37.857 回答
0

就这样吧。SVM 中的 C 参数是误差项的惩罚参数。您可以将其视为算法必须满足的正确分类程度或SVM必须满足的优化程度。

对于更大的 C 值,SVM 优化器无法对任何单点进行错误分类。是的,正如您所说,SVM 优化器的容差对于较高的 C 值很高。但对于Smaller C,SVM 优化器至少允许有一定的自由度,以满足最佳超平面!

SVC(C=1.0, kernel='rbf', degree=3, gamma='auto') --> 低容错 RBF 内核

SVC(C=1000.0,kernel='linear',degree=3,gamma='auto')-->高容错线性内核

参考:http ://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC

于 2017-06-16T07:32:52.377 回答