C在具有线性内核的SVM中有什么影响?


134

我目前正在使用具有线性内核的SVM对数据进行分类。训练集上没有错误。我尝试了几个参数值 ()。这并没有改变测试集上的错误。C105,,102

现在我不知道:这是一个错误由红宝石绑定引起libsvm我使用(RB-LIBSVM)或者是这个理论可以解释

参数是否应始终改变分类器的性能?C


只是一个评论,而不是答案:任何使两个项之和最小的程序,例如应该(imho)告诉您这两个项的末尾,所以您可以看到它们如何保持平衡。(要获得有关自己计算两个SVM术语的帮助,请尝试提出一个单独的问题。您看过一些最差的问题吗?您是否可以发布与您的问题类似的问题?)|w|2+Cξi,
denis 2012年

Answers:


136

C参数告诉SVM优化要避免对每个训练示例进行错误分类的数量。对于较大的C值,如果该超平面在使所有训练点正确分类方面做得更好,则优化将选择一个较小边距的超平面。相反,很小的C值将导致优化器寻找较大的间隔分隔超平面,即使该超平面将更多点分类错误。对于非常小的C值,即使训练数据是线性可分离的,您也经常会得到错误分类的示例。


1
好的,我知道C决定了错误分类对目标函数的影响。目标函数是正则项和误分类率的总和(请参见en.wikipedia.org/wiki/Support_vector_machine#Soft_margin)。当我更改C时,这对我的目标函数的最小值没有任何影响。难道意味着正则化项总是很小?
alfa 2012年

3
我建议尝试更广泛的C值范围,例如10 ^ [-5,...,5],如果对数据集的优化速度很快,则可以尝试更大的值,以查看是否获得了看起来更合理的值。训练误差和最小成本的值都应随着C的变化而变化。另外,您的数据规模是否极端?通常,按比例缩小数据时,最佳C参数应该较大,反之亦然,因此,如果要素的值很小,请确保为可能的C值包括很大的值。如果上述的帮助,我这个问题是在Ruby绑定
马克颤抖

3
将平衡精度从0.5(只是猜测)更改为0.86听起来对我来说没有什么边际影响。正如Marc所建议的那样,研究C的更细的值网格是个好主意,但是您给出的结果似乎是正常的行为。人们可能会期望由于过拟合导致C趋于无穷大而使误差再次上升,但是在这种情况下,这似乎并没有太大问题。请注意,如果您真的对平衡误差感兴趣,并且您的训练集没有50:50的
比例

2
通过对属于正类别和负类别的模式使用不同的C值(在渐近上等效于重新采样数据以更改属于每个类别的模式的比例)。
迪克兰有袋博物馆,2012年

2
我认为,一旦达到C = 10 ^ 0,SVM就可能已经正确地对所有训练数据进行了分类,并且没有任何支持向量被绑定(alpha等于C),在这种情况下,使C更大对解决方案没有影响。
迪克兰有袋博物馆,2012年

152

在SVM中,您正在搜索两件事:具有最大最小边距的超平面,以及正确分隔尽可能多实例的超平面。问题在于您将无法总是同时获得这两件事。c参数确定您对后者的渴望。我在下面画了一个小例子来说明这一点。左侧有一个低c,给您一个很大的最小余量(紫色)。但是,这要求我们忽略未能正确分类的蓝色圆圈离群值。在右侧,您的c高。现在,您将不会忽略异常值,因此最终的利润要小得多。

在此处输入图片说明

那么,这些分类器中哪一个最好?这取决于您将要预测的未来数据的样子,当然,大多数情况下您并不知道。如果将来的数据如下所示:

大c最好 那么使用大c值学习的分类器是最佳的。

另一方面,如果将来的数据如下所示:

低c最好 那么使用低c值学习的分类器是最好的。

根据您的数据集,更改c可能会或可能不会产生不同的超平面。如果确实产生了不同的超平面,则并不意味着您的分类器将针对您用于分类的特定数据输出不同的类。Weka是用于可视化数据并为SVM进行不同设置的一个很好的工具。它可以帮助您更好地了解数据的外观以及为何更改c值不会更改分类错误。通常,很少有训练实例和许多属性可以更轻松地线性分离数据。另外,您正在评估自己的训练数据而不是新的看不见的数据这一事实也使分离更加容易。

您尝试从哪种数据中学习模型?多少数据?可以看到吗?


4
我已经超过3年没有接触数据了。这是一个非常高的维度,而且嘈杂,因此我不允许发布它。该问题已经得到了回答,但是我认为您的可视化效果非常好且直观。
阿尔法2015年

太棒了 您对伽马值也有这样的解释吗?
MonsterMMORPG,2015年

2
gamma参数用于高斯核函数。内核函数可以看作是将原始要素转换到另一个空间的有效方法,在该空间中,新要素空间中的分离超平面在原始要素空间中不必是线性的。例如,原始特征空间中数据点的二维位置可用于计算新特征,该新特征表示到地图上某个标记的距离。有了这项新功能,非线性分类器(在原始空间),可以制成其决策边界形成围绕标记一个圆圈
肯特·蒙特Caspersen

@KentMuntheCaspersen对C的解释不正确吗?这与《统计学习入门》一书中的说法相反。
diugalde

2
@diugalde您能从这本书中引用什么与我的解释完全不同吗?我一直认为c是错误分类的代价(分类中c容易记住)。这样,较高的c意味着错误分类的高昂代价,从而导致该算法试图完美分离所有数据点。对于异常值,这并非总是可能或不会总是导致良好的总体结果,这是降低/引入c的充分理由。
肯特·芒特·卡斯珀森

26

C本质上是一个正则化参数,它控制在训练数据上实现低误差与最小化权重范数之间的权衡。它与岭回归中的岭参数很相似(实际上,实际上,线性SVM和岭回归之间在性能或理论上几乎没有差异,因此,我通常使用后者-如果有更多属性而不是观测值,则使用内核岭回归)。

正确调整C是使用SVM的最佳实践中至关重要的一步,因为结构风险最小化(基本方法背后的关键原理)是通过调整C来实现的。参数C强制执行SVM规范的上限。权重,这意味着存在由C索引的一组嵌套的假设类。随着我们增加C,我们就增加了假设类的复杂度(如果我们稍微增加C,我们仍然可以形成我们之前可以做的所有线性模型还有一些我们在增加权重的允许范数上限之前无法做到的)。因此,除了通过最大余量分类实现SRM之外,还可以通过控制C限制假设类的复杂性来实现它。

可悲的是,确定如何设置C的理论目前还不是很完善,因此大多数人倾向于使用交叉验证(如果他们做任何事情)。


好的,我想我现在了解C的含义。:)
alfa 2012年

2
但是,如果C是一个正则化参数,那么为什么一般来说进行正则化以减轻过度拟合(即通过创建一个更通用的模型),为什么高C会增加过度拟合呢?
user1603472 2016年

2
C是一个正则化参数,但实际上它与数据不匹配项(松弛变量的总和)而不是正则化项(边距位)相关,因此C的值越大,意味着正则化的程度就越小,而不是更大。另外,您也可以将常规化参数表示为1 / C。
迪克兰有袋博物馆,2016年

8

C是一个正则化参数,它控制在实现低训练误差和低测试误差之间进行权衡的方法,该误差是将分类器推广到看不见的数据的能力。

考虑线性SVM的目标函数:min | w | ^ 2 + C∑ξ。如果您的C太大,优化算法将尝试降低| w |。尽可能多地导致尝试对每个训练示例正确分类的超平面。这样做会导致分类器的泛化属性损失。另一方面,如果C太小,则可以给目标函数一定的自由度来增加| w |。很多,这将导致较大的训练错误。

下面的图片可以帮助您直观地看到这一点。 C = 10000000的线性SVM分类器C = 0.001的线性SVM分类器


我不太了解你的情节。你能解释一下吗?
阿尔法2015年

1
@alfa:我显示这些图的意图是:1)如果C太大(图1),则您的分类器将过拟合,即它将尝试对每个训练数据点进行准确分类。图1显示了几乎所有训练点均已正确分类。2)另一方面,如果C太小(图2),则您的分类器将不合适。曲线2显示了欠拟合分类器。它不会将这些点分为各自的类别。希望这可以帮助。
deerishi

这意味着您的x轴和y轴显示两个不同的功能。标签“数据集长度”和“均值和”有点令人困惑?
alfa 2015年

有趣的是,在两种情况下,正确选择C都会有帮助。
alfa 2015年

2
我认为看不到C = 10000000是一个错误的选择,并且我认为数据集不是证明这一点的正确方法。也许在分离超平面的错误一侧上只有几个异常值的数据集会更好?
alfa 2015年

4

上面的答案非常好。仔细阅读您的问题后,我发现有两个重要事实可能会被我们忽略。

  1. 您正在使用线性核
  2. 您的训练数据是线性可分离的,因为“训练集没有错误”。

给定这两个事实,如果C值在合理范围内变化,则最佳超平面将仅在边界(由支持向量形成的间隙)内随机少量移动。

直观地,假设训练数据上的边距很小,和/或在边距内也没有测试数据点,则在边距内最佳超平面的移动不会影响测试集的分类误差。

但是,如果将C设置为0,则SVM将忽略错误,并仅尝试最小化权重的平方和(w),也许在测试集上可能会得到不同的结果。


2

C参数用于控制离群值-低C表示我们允许更多的离群值,高C表示我们允许更少的离群值。


1

高C(成本)意味着分类错误的成本增加。这意味着灵活的内核将变得更易弯曲,以避免在训练集中对观察结果进行错误分类。

如果内核要弯曲,则在对新数据进行预测时,该模型将无法很好地推广。

如果内核是直截了当的,那么在对新数据进行预测时,该模型将无法很好地推广。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.