支持向量机SVM是一种分类方法。首先考虑线性的情况,如图所示的一个二元分类:
红线对应超平面,超平面一边的数据对应的分类结果y全是1,另一边全是-1。
红线对应的分类函数为:
式中,为系数n*1的向量,
为数据点向量,大小为n*m。
如下图所示:当时,说明此时的点
在超平面上。左侧的点,都使其满足
,即,y=-1;右侧的点,都使其满足
,即,y=1。
现在考虑超平面在什么位置合适?答案是,在上图中两条虚线的中间位置。途中两条虚线所连接的点就称为支持向量。那么接下来的问题就是求和
使得超平面在中间位置,也就是"有最大的间隔"。
1. 函数间间隔和几何间隔
一般而言,一个点距离超平面的远近可以表示为分类预测的确信或准确程度。
在超平面确定的情况下,
能够相对的表示点x到距离超平面的远近,而
的符号与类标记 y的符号是否一致表示分类是否正确,所以,可以用量
的正负性来判定或表示分类的正确性和确信度。
函数间隔定义为:
超平面关于训练集的函数间隔为超平面关于所有样本点
(
是一个向量,大小为1*m,m代表有m个特征) 的函数间隔最小值,
是特征,y是结果标签(1或者-1) ,i表示第i个样本,有:
但是函数间隔会随着
成比例的变化而变化,而
成比例的变化所对应的最小间隔(或者超平面)还是同一个,不利于进行约束计算。因此,引入几何间隔。
几何间隔定义为:
式中,等式左边 表示几何间隔,右边
表示函数间隔。
如下图所示,几何间隔表示点到超平面的距离。
2. 最大间隔分类器
由于几何间隔为点到超平面的距离,所以,当这个距离越大,代表分类正确的把握(可能性)也越大。为了使一个具有n个点的数据集都分类正确,我们希望的的是找到n个数据集中几何间隔最小的点,并使得其几何间隔最大化。数据集中最小的几何间隔定义为数据集的几何间隔。最大化间隔分类器将使得这个间隔最大。
所以,最大间隔分类器的目标定义为:
(几何间隔)
需要满足的条件:
(函数间隔)
这是因为是数据集中最小的几何间隔。
为方便推导和优化,令(
是指函数间隔),由于函数间隔可以任意放大和缩小,所以
对目标函数优化没有影响。由于几何间隔
,而函数间隔
,所以目标函数转化为:
通过求解该问题,即可得到最大间隔分类器。
3. 问题的转化
以上的得到的目标函数,经转化可得到:
这是一个二次优化的问题:目标函数是二次的,约束条件是线性的。
对偶变量的优化求解:
引入Lagrange对偶变量,将约束函数融入到 目标函数中去:
令:
式中, 不小于0,因为若小于0,
会无穷大,找不到合适的
。
当所有的条件满足时, ,因为后面一部分表达式最小为0。现在的目标函数为:
取的最小值是因为我们的原问题是取
得最小值。
当满足KKT条件时,将问题转化为,两者问题等价:
求解上式的过程,第一步,先固定,而让
关于
和
最小化,分别对这两个求偏导数,即令
,
,得到:
带入到得到:
式中的i,j说明任意两个元素(包括与自身)都要做该运算。
第二步,对求极大值,得到:
这样得到的结果里已经没有和
,只有Lagrange乘子。如果解出了
,有确定的关系可以得到
和
。