软间隔支持向量机在处理线性不可分问题时引入,允许一些训练样本出现在间隔内部的概念。这是通过引入松弛变量(slack variables)来实现的,它们允许一些样本出现在错误的一侧,从而使模型更加健壮并能够容忍噪声和离群值。软间隔是一种用于在最大化间隔的同时处理分类错误的方法。软间隔SVM是SVM的一种变体,用于处理现实世界中不完全线性可分的情况。软间隔的引入使SVM更加灵活,能够适应各种数据集。
前面我们谈论的是线性可分的 SVM,在实际的场景下,我们的样本大都是线性不可分的,如下图所示:
在黑色圆形样本中包含了红色方块样本,同样在红色方块样本中包含了黑色圆形样本,我们无论如何也无法用一个超平面将其完全分类正确。此时,就带来一个问题:
我们知道线性 SVM 必须在满足样本分类正确的前提条件 ,再计算最大间隔。但是,此时很明显有两个特别的样本,导致我们无法满足这个前提条件,进而也无法去计算最大间隔。
我们用个例子来帮助理解,快考试了,老师希望全班同学考试能够达到 60 分。但是,总是有个别的同学达不到 60 分,为了达到全部通过的目的,对于不够 60 分的同学,缺多少分就给额外加多少分,然后整个班级达到了目标。
同理,为了能够让部分特别的样本也能够满足样本分类正确这个前提条件,我们给该条件增加一个松弛变量 ξ ,此时我们求解的目标函数变为:
PS:ξ 松弛变量代表间隔差,我们的每个样本都有一个 ξ 值。如果 ξ 值为 0,表示该样本的能够被正确分类。如果 0 < ξ < 1,表示该样本分类正确。如果 ξ >= 1,则表示该样本分类错误。如下图所示:
- 样本1:ξ = 0,说明样本被分类正确。
- 样本2:0 < ξ < 1, 样本在正确一侧,但在边缘内,距离超平面不够远。
- 样本3:ξ > 1,相当于红色样本跑到了黑色的区域了,这就表示分类模型把该样本分类错误。
我们把这种弹性的间隔叫做 "软间隔",我们把所有样本的间隔差累加起来:ξ~1~+ξ~2~+...+ξ~n~ 用来衡量距离完全线性可分的程度,该值等于 0 时,说明支持向量机做到了将正负样本完全分开了。现在,我们可以将线性支持向量机的公式变成下面的样子:
至此,我们应该明白:
- 如果我们希望支持向量机的间隔更大,就得允许在训练时,更多的样本落在最大间隔内部,甚至在分类错误的一侧;
- 如果我们希望训练时,要求支持向量机尽可能多的将样本分类正确,即:充分学习训练样本,则对错误样本的容忍度就不能太高。
另外还要明确,合理的最大间隔,容忍一些正常或者异常的样本分类错误,会提升模型的泛化能力。我们通过在在目标函数中引入乘法参数 C 来平衡最大间隔和分类错误样本容忍程度。
- 当 C 的值较大,说明间隔违例(在错误一侧,或者在最大间隔内部)带来的损失会被放大,模型越不能容忍这种错误。
- 当 C 的值较小,说明间隔违例样本打来的损失较小,模型能够适当承受该损失,并适当的放大最大间隔,以获得模型泛化能力的提升。