SVM中的参数C&标准找到最佳参数

时间:2012-10-09 23:00:42

标签: statistics svm

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

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

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

3 个答案:

答案 0 :(得分:1)

什么是C?

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

  1. 有利于“更简单”权重的正则化术语
  2. 一个损失术语,确保权重正确分类训练数据点。
  3. C只是这些与术语重要性之间的平衡。如果C很高,你会给予(2)很大的权重,如果C很低,你会给予(1)很大的权重。

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

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

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

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

    <强>概要

    培训SVM是两个术语的平衡。 C是损失项与正则化项的相对重要性。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

SVC(C=1.0, kernel='rbf', degree=3, gamma='auto') - &gt;低容忍RBF内核

SVC(C=1000.0,kernel='linear',degree=3,gamma='auto') - &gt;高容忍线性内核

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