最优超平面可以分为线性可分的和线性不可分的两种情况,而支持向量机方法在最初就是在线性可分的情况下提出来的。
为了不失普遍性地得出支持向量机中的最优分类超平面,在此我们讨论支持向量机的基本内容只是限定在二分类的范围内。我们所要获得的目标是将要确定一个判别函数,是由训练样本来确定此函数的,它可以完全的分开将两类训练样本数据,并且可以将未知的样本数据也能够正确的进行分类在训练后得到的分类器,即其具有良好的泛化性能或推广能力。
图2.6 最佳分类超平面
如上图2.6所示,如果要将两类样本数据分开,那么会存在有很多的线性分类器都可以将这两组数据正确的分开,可是却只有一条线性分类器可以使得两类点与他的距离(Margin)达到最大值,那么我们所要求的最佳分类超平面就是这个线性分类器。很显然,我们可以看出该分类超平面的边界与其它的亦可能正确分类的边界相比却具有更好的泛化能力或推广能力,这就是为什么SVM比其它分类方法优越的所在,即支持向量机不但寻求能够将样本数据能够正确的分开,而且还寻求一种最优的分类线或分类面。
从线性可分的情况下的最优分类面发展所得来的支持向量机, 其基本思想可用图2.7中的两维和两类样本数据的情况来加以说明的。在图中,方形点和圆形点代表这两类不同的样本数据点,H为分类线(当然亦是唯一的一条最优分类线),H1和H2是分别为过各类样本数据点中的离分类线(最优分类线)最近的样本数据点,并且是平行于分类线(最优分类线)的两条直线, 两条线之间的距离叫做分类间隔(margin)。如下图2.7所示:
14
H1 H H2 margin?2/w 图2.7 线性可分情况下的分类超平面
设线性可分情况下的样本数据集为(xi,yi),i?1,?,n,x?Rd,y?{?1,?1}。d维空间中的线性判别函数为:g(x)=wx+b,而分类面的方程为wx+b=0。首先我们可以对其进行归一化处理,使得所有样本数据都满足g(x)?1,那么这样分类间隔就将等于2/w。如果要求其分类间隔为最大,那么其实就是需要w值最小,而如果要求所得的分类面对所有样本能够正确的分类,那么就是要求要满足:
yi?wxi?b??1?0,i?1,?,n, (2.11)
因此在满足上式公式中的且使w值最小的分类面就是我们所要求取的最优分类面。在这两类样本数据点中距离最优分类面最近的数据点,且在H1和H2两类线上的训练样本数据点,就是使公式等号成立的那些样本数据点我们就称作为支持向量。
求取最优分类面问题可以转化为如下式(2.12)的约束优化问题:
minisesubjecttol12w?C??i2i?1yi?wxi?b??1??i?0 (2.12)
i?1,2,?,l公式(2.12)是一个二次凸规划的问题,由于其目标函数和约束条件都是凸的,依据最优化的理论,那么这一问题将会存在唯一的全局最小解。应用Lagrange乘子法且满足KKT条件(Karush-kuhn-Tucher):
12lL(w,b,a)?w??ai(yi((w?xi)?b)?1) (2.13)
2i?1这里的ai?0是拉格朗日乘子。
15
应用拉格朗日乘子法对其求极值,对其相应的w和b求偏导数,则可找到相应的对偶形式:
l??L(w,b,a)?w??yiaixi?0???wi?1 (2.14) ??L(w,b,a)l???yiai?0??wi?1?将得到的关系式:
w??yiaixi (2.15)
i?1l ?yiai?0 (2.16)
i?1l 代入到原始的拉格朗日函数中,可得到:
1L(w,b,a)?w 22??ai(yi((w?xi)?b)?1)i?1l
ll1l??yiyjaiaj(xi?xj)??yiyjaiaj(xi?xj)??ai (2.17) 2i,j?1i,j?1i?11l??ai??yiyjaiaj(xi?xj)
2i,j?1i?1在这里考虑Karush-Kuhn-Tucker互补条件,条件要求最优解ai*,(w*,b*) 必须满足:
lai*[yi(w?xi?b*)?1]?0,i?1,2,?,l (2.18)
这表明仅仅是函数间隔为1的输入点xi,也即最靠近超平面的点所对应的ai*为零,所有其它的点所对应的参数ai*为零。因此当要转换表达式到权重向量中时,只包括哪些最靠近于超平面的样本点在内,这也就是为什么要将这些样本数据点称作为支持向量的原因(支持向量机的由来也缘于此)。支持向量机决策的依据就是从训练样本数据中得到最后的支持向量,从而求取最优分类超平面的决策函数。
最后可得到解上述问题的最优分类函数为:
f(x)?sgn{w?x?b}?sgn{?ai*yi(xi?x)?b*} (2.19)
**i?1k16
上式(2.19)中a*与b*是确定最后最优分类超平面的参数,(xi?x)为其两个向量的点积。由上式可知:非支持向量所对应的ai都全部为零,所以求和只是对于少数支持向量而进行。
在线性不可分的情况下,可以在条件
yi[wxi?b]?1?0 (2.20)
中增加一个松弛项?i?0使其成为
yi[wxi?b]?1??i?0 (2.21)
将目标改为求
n12w?C(??i) (2.22) 2i?1使公式(2.22)最小,即折中考虑最小错分样本数和最大分类间隔,由此就可以得到广义的最优分类面。其中,C>0是一个常数,它是控制对错分样本数据的惩罚程度。
2.2.4支持向量机
上节所得到的最优分类函数为:
f(x)?sgn{w?x?b}?sgn{?ai*yi(xi?x)?b*} (2.23)
**i?1k该式只是包含有需待分类样本数据点和训练样本数据点中的支持向量的内积运算,由此可见如要解决一个特征空间中的最优线性分类问题时,我们只是需要知道在这个特征空间中的内积运算便可。
对于在非线性问题中,我们可以进行将非线性变换转化为在某个高维空间中的线性问题来解决,在变换空间求取最优分类面。但是这种变换相对是比较复杂的,所以在一般情况下是不容易实现这种思路的。
依据泛函的相关理论基础,只要存在一种核函数K(Xi,Yj)在满足Mercer条件时,它就会对应于某一变换空间中的内积。因此若要实现某一非线性变换后的线性分类时,只要在最优分类面中采取适当的内积核函数K(Xi,Yj)即可,而其计算的复杂度也不会增加的。相对应的分类函数也变为了:
f(x)?sgn{?ai*yiK(xi?x)?b*} (2.24)
i?1k17
这就是支持向量机。
x1x2 K(x1,x)xa1y1 由图2.8中可以看出,SVM所求得的决策函数在形式上与一个神经网络比较类似,其输出是由若干个中间层的节点依据线性而组合的,而在其中的每一个中间层的节点对应输入样本数据点与一个支持向量的内积运算,因此它也被称作为支持向量网络。
2.2.5 SVM核函数
采用不同的核函数k(x,xi)可以构造出实现输入空间中不同类型的非线性决策面的学习机,从而形成不同的SVM算法。在解决实际问题当中,通常是直接给出核函数[29,30]。常用的核函数有
1)线性核函数(linear kernel)
得到的是线性分类器
2)多项式核函数(polynomial kernel)
其中s,c,d为参数。线性核函数可以看做是多项式核函数的一种特殊情况。得到的是q阶多项式分类器
3)径向基核函数(radical basis function,rbf)
其中? 为参数,这种得到的是一种径向基函数分类器。 4)Sigmoid核函数(Sigmoid tanh)
xm K(xm,x) xamym图2.8 支持向量机网络示意图
k(x,xi)?(x?xi) (2.25)
k(x,xi)?(s(x?xi)?c)d (2.26)
k(x,xi)?exp{?x?xi2?2} (2.27)
k(x,xi)?tanh(s(x?xi)?c) (2.28)
18
K(x2,x) xa2y2