SVM - 硬间隔还是软间隔?

70

给定一个线性可分的数据集,使用硬间隔支持向量机是否一定比软间隔支持向量机更好?


1
我认为在线性可分数据集的情况下,不需要使用SVM,只有当数据无法很好地进行线性分离时,SVM才是有用的。SVM的荣誉在于软边界,在您的情况下并不需要它。 - Saeed Amiri
2个回答

145

即使训练数据集是线性可分的,我也希望使用软间隔支持向量机会更好。原因是在硬间隔支持向量机中,单个离群值可以决定边界,这使得分类器对数据中的噪声过于敏感。

在下面的图表中,单个红色离群值基本上确定了边界,这是过度拟合的标志。

enter image description here

为了理解软间隔支持向量机的作用,最好从对偶形式来看它,在这里你可以看到它与硬间隔支持向量机具有相同的边缘最大化目标(边缘可能为负),但是还有一个额外的约束条件,即与支持向量相关联的每个拉格朗日乘子都受到C的限制。本质上,这限制了任何单个点对决策边界的影响。有关推导,请参见Cristianini/Shaw-Taylor的《支持向量机和其他基于内核的学习方法简介》中的命题6.12。
结果是,软间隔支持向量机可以选择具有非零训练误差的决策边界,即使数据集是线性可分的,并且更不容易过度拟合。
以下是在合成问题上使用libSVM的示例。圆形点表示支持向量。您可以看到,减小C会导致分类器牺牲线性可分性以获得稳定性,从某种意义上说,任何单个数据点的影响现在都受到C的限制。

enter image description here

支持向量的含义:

对于硬间隔支持向量机,支持向量是“在边缘上”的点。在上面的图片中,C=1000非常接近硬间隔支持向量机,您可以看到圆圈中的点是将触及边缘的点(在该图片中,边缘几乎为0,因此与分离超平面本质相同)

对于软间隔支持向量机,更容易用对偶变量来解释它们。用对偶变量表示的支持向量预测器如下所示。

enter image description here

这里,alphas和b是在训练过程中找到的参数,xi和yi是您的训练集,x是新的数据点。支持向量是训练集中包含在预测器中的数据点,即具有非零alpha参数的数据点。


帮了我很多! 你能解释一下“支持向量”的术语吗?在SVM中它的意义是什么? - D.G
3
支持向量是指那些被错误分类或被正确分类但接近决策平面的点。决策规则的形式为f(x) = w·x + b,大多数SVM公式将“接近”x定义为abs(f(x)) < 1。 - Davis King
@YaroslavBulatov,在您的第一张图中,展示了“硬间隔”分类器,蓝色线看起来不像是最大间隔超平面。如果我将这条线变得更加水平,我会得到更大的间隔。您是如何得到这个“硬间隔”超平面的? - Leo
那是一种大致的图表,我认为你需要更多的蓝色点来使它更精确。 - Yaroslav Bulatov
很好的反例。一幅图胜过千言万语。 - Benjamin Gruenbaum
@Leo:蓝线是两个边界之一,最大间隔超平面落在这两个边界之间,而不是蓝线本身就是最大间隔超平面。我们可以看出,角度有点次优,因为得到的最大间隔超平面将不会垂直于连接分布质心的线。 - user3721976

5

我认为,硬间隔支持向量机会过拟合到特定的数据集,因此无法泛化。即使是线性可分数据集(如上图所示),在界限内的异常值也可以影响边缘。软间隔支持向量机更具通用性,因为我们可以通过调整C来选择支持向量。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接