支持向量机是一个二类分类模型,但也可以扩展为多类分类。其基于间隔最大化和核技巧的特点可以使它可以灵活处理线性或非线性分类问题。
支持向量机可是形式化为一个凸二次规划问题,学习算法是求解基于凸二次规划的最优化算法。
按照训练数据是否线性可分,支持向量机可以分为基于硬间隔的线性可分支持向量机、基于软间隔的线性支持向量机、基于核技巧和软间隔最大化的非线性支持向量机。三者复杂性是依次增加的。
1、基于硬间隔最大化的线性可分支持向量机
我们知道,感知机和决策树等学习方法没有区分模型的输入空间和特征空间,即认为两者所处的空间是一样的。支持向量机的输入空间和特征空间是不同的,输入空间为欧氏空间或离散集合,特征空间是希尔伯特空间。希尔伯特空间可以看作是欧氏空间的扩展,其空间维度可以是任意维的,包括无穷维。并且一个重要的性质是其具有欧氏空间不具备的完备性。这些特点都是支持向量机在做非线性特征空间映射所需要的。
下面从最简单的线性可分支持向量机入手,学过感知机的都知道,感知机通过训练一个超平面将平面或空间线性可分的点进行划分。
其超平面方程为 w?x+b=0;
分类决策函数f(x)=sign(w?x+b)。
线性可分支持向量机也是如此,通过找寻分割平面来划分数据集。不同的是,感知机的学习策略是误分类点到超平面距离和最小化,而线性可分支持向量机是基于硬间隔最大化的。
何为硬间隔最大化?
我们知道,当参数w,b确定后,其分类超平面也就确定了,那么分类超平面两侧的点到超平面的距离就可以得出,
这些点到分类超平面中必然有一个最小距离,实际上可划分这两组点的超平面的参数w,b有很多组,同样对应有最小距离。w,b选取什么值时,分类效果最好呢?就是分类面到两侧的距离越远说明分类效果越好,即找出这组最小距离中的最大值。为了度量这个值,这里引出了函数间隔和几何间隔的概念。
在超平面确定的情况下,能够相对表示点x距离超平面的远近,可以理解为对超平面进行上下移动。
而的符号与类标记符号是否一致能够表示分类是否正确。
函数间隔:对于给定的训练数据集T和超平面(w,b),定义超平面(w,b)关于样本点的函数间隔为:
定义:
为超平面(w,b)对所有样本点函数距离最小值。
但是函数间隔存在一个问题,就是如果我们成比例地改变w,b的值,那么函数间隔的值就是变为原来的两倍,而超平面却并没有改变。为了解决这个问题,定义了几何间隔:
对于给定的训练数据集T和超平面(w,b),定义超平面关于样本点的几何间隔为:
定义:
为超平面(w,b)对所有样本点几何间隔最小值。
其中||w||为w的L2范数,通过除以法向量的范数来对距离进行约束,保证了如果w,b成比例变化时,点到超平面的几何间隔不变。
从函数间隔和几何间隔的定义可以看出:
这里我们回到硬间隔最大化。为了使分类效果最好,我们要求这个最小间隔值最大,即求使下列目标函数和约束条件成立的w,b值 ,
即:
我们知道,
函数间隔 ?随着w,b成比例的变化而成同比例的变化,即若w,b同时变为原来的两倍,则函数间隔也为原来的两倍,故当w,b成比例变化时,目标函数不变,约束条件也不变。也就是说取值并不影响目标函数和约束条件,不影响整个问题的
求解,因此为了接下来的计算方便,我们取=1,从而目标函数可以写为:
因为求 的最大等价于求||w||的最小,也就等价于求的最小,从而将问题改写为:
为什么要将 的最大等价求的最小,是因为要将目标函数转换为一个凸二次规划问题,从而满足后面求对偶问题需要的KKT条件。系数加个1/2是为了求导的时候约去系数,计算方便。
现在的问题就是如何求解在有不等式约束条件下的函数最优。我们可以使用拉格朗日乘子法来求解,定义拉格朗日函数的形式如下:
由上式可知,因为h(x)=0, g(x)≤0,在满足约束条件下的 L(x,α,β)必然小于等于f(x),且max L(x,α,β)=f(x)。
为每个约束条件引入一个拉格朗日乘子≥0,且根据拉格朗日乘子法的形式将约束条件添加负号转化为小于等于,定义拉格朗日函数:
这样问题就变成了求
一般来说,这样的形式不太容易求解,我们可以转为求其对偶问题的解。
原始问题与对偶问题存在相同的最优解,要求原始问题满足KKT条件。所谓KKT条件就是:
1. L(w,b,α)对x求导为零;
2. h(x) =0;
3. α?g(x) = 0;
这时我们之前构造的凸二次规划问题就派上用场了,可以证明其存在对偶问题,且对偶问题最优值与原始问题最优值相同。
转换为对偶问题后,求解过程如下:
1.求
将拉格朗日函数L(w,b,α)分别对w,b求偏导且令其等于0,解出
2.求对α的极大,即:
对上述问题可以使用SMO算法求出α的解为α=
我们知道α≥0,且可以用反证法证明必然存在至少一个α_j>0,若α全部等于0,则由上式可知w=0,而w=0显然不是原始问题的解。对此i,α_j>0,又根据KKT条件α?g(x) = 0,故g(x)=0,即:
注意到=1,将替换1,并提取,可以算出:
从而可以写出分类超平面:
分类决策函数为:
2、基于软间隔最大化的线性支持向量机
上面所说的线性可分支持向量机是基于训练样本线性可分的理想状态,当训练样本中存在噪声或者特异点而造成线性不可分时,就需要用到下面讲到的线性支持向量机。
在线性可分支持向量机中,我们假设函数间隔为1,若存在噪声或特异点函数间隔处于
(0,1)中间,那么这些点就不满足问题的约束条件,也就线性不可分。为了解决这样的问题,引入了松弛变量≥0,使得函数间隔与松弛变量的和大于等于1,从而约束条件变为:
同时因为约束条件引入了,所以目标函数也要改变,改为:
C>0,称为惩罚系数,一般由应用问题决定,C值大时会对误分类的惩罚增大。最小化目标函数包含了两层含义:一个是使 尽可能小即间隔尽可能大,一个是误分类点尽可能少,C作为两者的调和系数。
这种情况称为软间隔最大化。其问题可以定义为:
依然构造拉格朗日函数,并转换为对偶问题:
支持向量
之前一直说到支持向量机,那么什么是支持向量呢?支持向量机是基于间隔最大化来分类数据集的。在硬间隔最大化的情况下,如下图的红线为分离超平面,粉线和蓝线是将两类点分开的最大间隔线,其到分离超平面的距离分别为,决定这个最大间隔的蓝线上的两个点与粉线的一个点就是分类关键点,称为支持向量。
在软间隔最大化的情况下,
如下图,每个实例点到超平面的距离为。
支持向量由间隔边界(如红圈点)、间隔边界与超平面之间(如绿圈点)或误分点(如蓝圈点)这些对分类起着关键作用的点组成。
3、基于软间隔和核技巧的非线性支持向量机
前面说的数据集都是线性可分或者近似可分的,而实际情况下的数据都是非线性可分的。
这时就需要用到非线性变换,将输入空间上的输入映射到高维特征空间,将非线性问题变换为线性问题,从而利用线性分类器进行分类。例如:
对于非线性的方程,我们取那么原方程就变为:
从而将问题转化为三维空间上的线性可分问题。
核函数就是做这样一个事情,它通过一个非线性变换将输入空间对应到一个希尔伯特空间,使得在输入空间中的超曲面模型对应特征空间中的超平面模型。核函数的定义如下:
设χ是输入空间(欧氏空间或离散集合),Η是特征空间(希尔伯特空间),如果存在一个从χ到Η的映射
φ(x):χ→Η
使得对所有的x,z∈χ,函数Κ(x,z)=φ(x)·φ(z),例如:
假设输入空间为二维欧氏空间,核函数是Κ(x,z)=
可以取特征空间为三维欧氏空间,记输入x=(x1,x2),z=(z1,z2)
取映射函数为:
则满足Κ(x,z)=
由之前讲到的线性可分的向量机可以知道,向量机的分类函数取决与属于x与输入样本点的内积,当线性不可分的时候,我们通过核函数将样本点的内积(x,z)映射为特征空间上内积的(φ(x),φ(z)),仍然使用前面定义的线性分类器,从而实现了有效且简便的非线性分类问题。非线性支持向量机的分类决策函数如下:
其中x是输入,x_i,y_i为样本点,α_i可通过SMO求解得出,b是关于α_i,x_i,y_i的函数,也可以得出,故函数分类结果可以求出。
到这里,支持向量机的大体思路基本完成了,也就是寻找分类超平面构造分类函数的过程;遇到非线性可分时候,就要想办法将其转换成线性问题,利用线性分类器来分类。求解的过程也就是求得分类超平面的参数问题,当参数不容易求解时,转换为其对偶问题来求,终于,最后可以求出来了。
好吧,支持向量机太长了,先到此为止,下一节介绍核函数及SMO算法。