在上一篇博客《线性可分支持向量机和软间隔最大化》中对严格线性可分的SVM进行了推导,最后提到了线性可分支持向量机对于非线性的数据集也是没有办法使用的,这是因为有时候少量异常点引入了非线性,本篇博客就来讲讲如何应对这些异常点。
1. 硬间隔最大化存在的问题
所谓“硬间隔”,就是不允许样本点出现在两条间隔边界(下图中虚线)之间,在不考虑对输入数据进行其他特征映射的条件下,只有严格可分的线性数据集才能满足这个条件。但实际中往往会因为少量异常样本点,使得数据不再线性可分,如果去除掉这些异常点还是线性可分的(这和非线性数据集有所不同)。另一方面,就算恰好找到某个分离超平面使得训练集可以线性可分,我们也不能保证这不是因为过拟合引起的。缓解该问题的一个办法是允许SVM在一些样本上出错,为此要引入“软间隔”的概念,如下图所示。
2. 软间隔线性可分SVM
更具体的来说,硬间隔是要求所有样本都满足
3. 学习的对偶算法
既然已经得到了要优化的目标函数,我们就可以利用上一篇博客的方法来对这个凸二次规划问题进行求解。同样地,利用KKT条件将优化目标(4)转化为无约束的优化函数,该问题的拉格朗日函数可以写为:
(1)先求 minw,b,ξL(w,b,ξ,α,μ) min w , b , ξ L ( w , b , ξ , α , μ )
将拉格朗日函数 L(w,b,ξ,α,μ) L ( w , b , ξ , α , μ ) 分别对 w,b,ξ w , b , ξ 求偏导并令其等于0:
(2) 求 minα,μL(w,b,ξ,α,μ) min α , μ L ( w , b , ξ , α , μ ) 对 α,μ α , μ 的极大
分离超平面:
(3) 得到支持向量
在线性不可分的情况下,将 α∗i>0 α i ∗ > 0 对应的样本点 x(i) x ( i ) 称为支持向量,这时的支持向量要比线性可分时的情况复杂一些,如下图所示。
分离超平面由实现表示,间隔边界由虚线表示,正例由
′∘′
′
∘
′
表示,负例
′×′
′
×
′
表示,图中还标出了样本点
x(i)
x
(
i
)
到间隔边界的距离
ξi∥w∥2
ξ
i
‖
w
‖
2
。
根据KKT条件中的对偶松弛性条件:
当 αi>0 α i > 0 时, y(i)(w⋅x(i)+b)−1+ξi=0 y ( i ) ( w ⋅ x ( i ) + b ) − 1 + ξ i = 0 ,该样本是支持向量,根据 αi α i 的取值,支持向量又分为几种不同的情况:
- 根据(9),当 0<αi=C−μi<C 0 < α i = C − μ i < C 时, μi>0 μ i > 0 ,又根据KKT条件 μiξi=0 μ i ξ i = 0 ,所以 ξi=0 ξ i = 0 ,这时样本点恰好在间隔边界上(正确分类那一侧),如图中1号点;
- 当 αi=C α i = C 时, μi=0 μ i = 0 ,该样本对求解 f(x) f ( x ) 没有帮助,这时需要根据 ξi ξ i 的值来判断。如果 ξi=0 ξ i = 0 ,样本点恰好在正确分类那一侧的间隔边界上,如1号点;如果 0<ξi<1 0 < ξ i < 1 ,样本点在分离超平面和间隔边界之间,如图中2号和4号点;如果 ξi=1 ξ i = 1 ,样本点恰好在分类超平面上;如果 ξi>1 ξ i > 1 ,样本点位于分类超平面误分那一侧,如3号点。
4. 小结
对软间隔的线性SVM算法流程做一个小结:
输入:线性可分数据集
T={(x(1),y(1)),(x(2),y(2)),…,(x(m),y(m))}
T
=
{
(
x
(
1
)
,
y
(
1
)
)
,
(
x
(
2
)
,
y
(
2
)
)
,
…
,
(
x
(
m
)
,
y
(
m
)
)
}
,
y(i)∈{−1,+1}
y
(
i
)
∈
{
−
1
,
+
1
}
输出:分离超平面和分类决策函数
(1) 构造约束最优化问题:
(3)计算得到 w∗ w ∗ 和 b∗ b ∗ :
和硬间隔的线性SVM相比,只有第一步构造约束优化问题那不一样,其余步骤都是一样的,毕竟都是线性SVM嘛,可以理解=-=。然后在分析支持向量的时候突然想到,而且大部分博客和书籍都没有特别提及的是,不管硬间隔还是软间隔,最后得到的模型还是只根据样本点在分离超平面那一侧的位置来进行分类,而 不是根据间隔边界!!!因为一开始我惯性思维认为是根据间隔边界,导致一直理不顺,这里提醒大家一下。间隔边界归根到底只是对分类超平面的一个约束(这第一篇博客在将感知机和SVM对比时也提到了),一旦求得超平面,间隔边界也就没用了。间隔边界的引入为模型提升了泛化能力。
目前为止,线性SVM终究只能应用于线性可分(硬间隔)或近似线性可分(软间隔)的数据集,那么对于非线性数据集怎么办呢,可以用核方法,这将在下一篇博客中讲。