线性可分支持向量机是最基本的形式,对应于两类数据能够被完全分离的的情况。它学习的目标在于在特征空间中找到一个分离超平面,能够将实例分到不同的类别里。分离超平面对应于方程ωx+b=0。
在另外一篇博客里介绍了感知机概念,感知机也是寻找一个超平面,能够让实例正确分类。
两者不同之处就在于,感知机所要找的超平面有无数多个,而支持向量机是要找间隔最大的那个,它是唯一的。那么,什么是间隔最大?首先来看看间隔的概念,分为函数间隔与几何间隔。
超平面的方程为ωx+b=0。设一个点为X1,那么|ωX1+b|这个值的大小就相对的表示了X1距离超平面的远近,值越大,这个点就离超平面越远,也就是被分类正确的确信度越高。
当我们的分类标签y∈{+1,-1}时,设ωx+b>0 点的标签为+1,ωx+b<0的标签为-1。
那么,就可以用 y(ωx+b) 这样来表示每个点被分类的正确性及确信度(因为不管是超平面哪一侧的点,带进去都是正值)。
总结一下,函数间隔就是可以用来表示每个点的确信度大小的。离超平面越远,则函数间隔越大。用公式可以表示为:
函数间隔有个缺点,就是当ω与b成倍改变时,超平面并没有变,但是函数间隔却也会跟着变。比如变为2ω与2b,那么函数间隔也会变为2倍。所以,我们引出了几何间隔的概念。
几何间隔是对超平面法向量ω进行了规范化,同时,对b也做同样的伸缩处理。这样,超平面不会变,间隔大小也被确定下来了。用公式表示如下:
事实上,如果还记得以前学的点到直线的距离公式,那么就明白,以上公式其实就是点到平面的距离公式,只不过分子上应该加的绝对值变成了用实例点标签乘积来保证它一定是个正值。
以上我们定义的是关于某个实例点的几何间隔。那么,关于训练集T的几何间隔为所有点的几个间隔的最小值,即:
总结一下可以看到,当ω与b成倍改变时,函数间隔会随着改变,几何间隔却是个固定不变的值(参照几何间隔公式,因为分母里面ω的二范数也会同时扩大那么多倍,就抵消了分子的倍数)。
根据对数据集T的几何间隔的定义,我们关心的其实就是间隔的下限。也就是说,我们关心的其实就是离分离超平面最近的那几个点,而远离的点我们是不关心的。要注意的是,以上我们是从结果推出来的,因为此时我们并未求出分离超平面对吧。所以,寻找超平面以及寻找最近点其实是不同的工作,但是在算法里可以同时实现。
具体的,可以表示为下面的约束优化问题,
目标是:
约束条件是:
接着考虑一个问题。对于以上两个式子里的γ,它代表的是函数间隔。我们在上边讨论过,当函数间隔成倍缩小放大时,也就代表ω与b也在同时缩小放大。对于上边的优化条件,当我们变动γ,等式里面的||ω||及b的值实际上也会自动变动,即,当γ变为λγ时,以上等式实际上变为了:
最后会发现,λ会被全部抵消掉。最后根据约束条件及优化条件而算出的ω与b其实并未改变。这也就是说,我们可以任意指定γ的值。这里为了方便,我们指定γ=1。
同时,最大化 ,其实就是要最小化
。
考虑到想用凸优化理论来解决上述优化问题,最终,构造如下优化问题:
根据以上可以求得ω与b的最优解,最后构造出分离超平面。
关于凸优化问题,可参见以前总结的文章:
http://blog.csdn.net/wy250229163/article/details/51868721
在上边建立优化模型过程中,我们自定义了函数间隔为1,根据不等式约束条件,离分离超平面最近的点即是使不等式取等号的点。也就是说,训练数据集的样本点中与分离超平面距离最近的样本点满足如下方程:
而这些点指向超平面的向量,就被叫做支持向量,因为很形象,超平面就是被这几个向量所支撑。
注意,这里是容易糊涂的地方。这里的因果关系是,在上一节我们已经证明了函数间隔取任意值都不影响优化模型的结果,所以我们定义函数间隔为1,使得最近样本点满足以上方程,然后来求出ω与b。当然也可以定义函数间隔为2,那么计算出的ω’与b’一定是原来ω与b的2倍。当我们写成超平面方程时,2就被约掉了,最后求出的超平面还是那个唯一的。
根据以上条件,可以看到,y∈{+1,-1},那么在超平面两侧,分别含有正例与负例的支持向量,它们距离超平面的距离均为1/||ω||,所以它们之间的间隔为2/||ω||。
首先,可以根据上边的等式,引入拉格朗日乘子,建立拉格朗日函数:
在优化等式里,约束条件是一个小于等于0的数,而目标函数是求极小值。思考一个问题,拉格朗日乘子αi取+∞,那么L(ω,b,α)岂不是能取到负无穷吗。
所以,事实上我们的优化目标应该是找一个足够小的α,使得L能达到足够大,即:
然后,根据凸优化理论,可以去寻找以上问题的对偶问题,即:
首先求解minL(ω,b,α)。
将L分别对ω,b求偏导数:
and
通过以上可以解得ω,然后将ω及第二个等式带入到L(ω,b,α)中,并化简,可以得到:
所以,优化问题转为了:
以上求极大,可以转变为以下求极小的优化问题:
根据以上等式,ω很好求,即:
但是b呢?
回忆一下凸优化理论里,对于凸函数的强对偶性,必须满足的KKT条件:
1. fi(x)<=0
2. hi(x)=0
3. λi>=0
4. λi*fi(x)=0
5. f’0(x)+∑λi*f’i(x)+∑μi*h’i(x)=0
其中第4条,写成这里的形式就应该是
再看到第3条,至少有一个α是大于0的(可用反证法证明),那么就可以知道,对于一个大于0的αj,可以得出:
于是,可以求出b*的值了。
注意,计算上边等式的时候,可以把那个1写为 ,这里的yi是指的标签,取值为{+1,-1}。
题目:正例 X1(3,3) X2(4,3) 负例X3(1,1)
解:
根据上上节最后的等式,构造约束最优化问题,并带入实例点,得到以下待优化问题:
α3=α1+α2带入第一个等式,并令S(α1,α2)分别对α1及α2求偏导数,令其为0,可以解得α1=3/2,α2=-1
可以看到,α2<0不满足约束条件,说明极值应该在边界条件上寻找。
令α1=0, ,此时α2=2/13时有极小值-2/13。
令α2=0, ,此时α1=1/4时有极小值-1/4。
所以,S(α1,α2)在(1/4,0)时有最小值-1/4。
通过以上可以求得α1=1/4,α2=0,α3=1/4。可见,X1与X3即为支持向量。
根据ω与b的计算公式,可以计算ω得:
选取α的一个正分量α1(同样也可选取α3),可计算b得:
注:本文总结内容参考自李航老师所著《统计学习方法》。