支持向量机(SVM)是一种二分类模型,它的思想和感知机很相似,也是在空间中找到一个超平面将正负样本点分开,也可以说SVM是在感知机基础上发展来的。所以在讲完感知机之后马上开始讲支持向量机。
1. 从感知机到支持向量机
感知机和支持向量机都是期望从空间中找到一个合适的分离超平面将两类数据正确分开。一般地,当训练数据集线性可分时,这样的超平面有无数多个。感知机利用所有误分类点到超平面总距离最小的方法求得超平面,这个超平面和参数初始值,误分类点选择顺序都有关,感知机的解依然有无数个。然而,我们模型的最终目标是在测试集上的泛化能力,这样的解虽然可以完全分开训练集数据,但是它们的泛化能力却千差万别,如下图中所示。
![](https://i-blog.csdnimg.cn/blog_migrate/45005b72d28df3e20c5f26b27cd45803.png)
直观上看,我们应该去找位于两类样本“正中间”的那个分离超平面(上图中加粗的线),因为它对训练样本局部扰动的“容忍性”最好,换而言之,这个超平面所产生的分类结果是最鲁棒的,因此它对未知样本的泛化能力最强。这就是支持向量机的基本思想,通过对分离超平面进一步增加约束,得到唯一“最优”的超平面。
同时,支持向量机也可以通过软间隔最大化、核函数去学习近似线性可分甚至非线性的数据,这是相比感知机质的飞跃,也是SVM很长一段时间称霸机器学习领域的原因。这些东西将会放在后续几篇博客,本篇只讨论线性支持向量机对于线性可分数据的情况。
2. 线性可分SVM
现在我们的目标是在众多候选分离超平面中找到“正中间”的那个超平面,也称为最大间隔分离超平面。如字面意思,就是这个平面不仅要能正确分开样本点,还要对最难分的样本点(离超平面最近的点)也有足够大的确信度将它们分开。这样的超平面应该对未知的样本具有很好的分类预测能力。那么我们如何描述这样一个超平面呢?这里先引入函数间隔和几何间隔的概念。
函数间隔和几何间隔
对于给定的训练集 T T 和超平面,定义超平面 (w,b) ( w , b ) 关于样本点 (x(i),y(i)) ( x ( i ) , y ( i ) ) 的函数间隔为:
函数间隔可以衡量分类预测的正确性即预测度。在 w,b w , b 确定的情况下,离超平面越远的点,其 γ^i γ ^ i 值就越大,其分类正确的可信度就越高。但是在训练过程中 w,b w , b 是不确定的,我们只需要成比例增大 w,b w , b ,函数间隔也会成比例增大,但此时超平面并没有改变。为了统一度量,我们可以对超平面的法向量 w w 加某些约束,如规范化,,使得函数间隔是确定的,这时函数间隔成为 几何间隔,和点到平面距离公式的不同之处在于,分类正确的点的距离是正的,分类错误的距离是负的:
间隔最大化
实际上我们所说的间隔最大化中的间隔就是指几何间隔。即找到一个超平面,使所有样本点到该平面几何间隔最小的值尽可能大。因为 w,b w , b 的缩放虽然会改变函数间隔 γ^i γ ^ i 的值,但却不会改变几何间隔 γi γ i 的值,所以函数间隔的取值并不会影响最终的结果。我们不妨取 γ^=1 γ ^ = 1 (即样本点到分离超平面的函数距离至少为1),即对于任一样本点 (x(i),y(i)) ( x ( i ) , y ( i ) ) ,满足:
![](https://i-blog.csdnimg.cn/blog_migrate/60917d64de674418a6e8f35017010190.png)
那么求最大间隔超平面的问题可以表示为下面的约束最优化问题:
支持向量和间隔边界
在线性可分的情况下,训练样本中与分离超平面距离最近的样本点成为支持向量。支持向量是使约束条件(6)等号成立的点。
对
y(i)=+1
y
(
i
)
=
+
1
的正类样本点,支持向量在超平面
![](https://i-blog.csdnimg.cn/blog_migrate/fce361822541c6cbbd19b8958dbe0617.png)
注意到
H1
H
1
和
H2
H
2
平行,且没有样本点落在他们中间,分离超平面与它们平行且位于他们中央。
H1
H
1
和
H2
H
2
被称为间隔边界,它们之间的距离称为间隔。间隔的大小依赖于分离超平面的法向量,等于
2∥w∥2
2
‖
w
‖
2
.
在决定分离超平面时只有支持向量起作用,其他样本点不起作用,移动支持向量将改变所求的超平面位置,所以这种分类模型称为支持向量机。SVM的一种重要性质就是,训练完成以后,大部分的样本都不需要保留,最终模型仅与支持向量有关。
3. 学习的对偶算法
在上面我们已经推出支持向量机的问题形式了,如式(5)(6),是一个凸二次规划问题。我们可以直接对其求解,但难度较大。这里我们利用拉格朗日对偶性,通过求解对偶问题得到原始问题的最优解。引入对偶形式一来更容易求解,而来可以自然引入核函数,进而推广到非线性分类问题。SVM模型表示如下:
(1) 现在我们先求 minw,bL(w,b,α) min w , b L ( w , b , α )
将拉格朗日函数 L(w,b,α) L ( w , b , α ) 分别对 w,b w , b 求偏导数并令其等于0:
(3) 得到支持向量
根据KKT条件中的对偶松弛性条件,
当 αi=0 α i = 0 时,说明该约束条件不起作用,该样本对 f(x) f ( x ) 不会有任何影响。
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 ∗ :
线性可分支持向量机对于非线性的数据集也是没有办法使用的。有时候数据集的非线性是由少量异常点引入的,这些异常点的处理可以使用软间隔最大化,将在下一篇博客中讲。