支持向量机(SVM)可以解决二分类的非线性问题。首先我们可以通过学习支持向量机(SVM)如何解决线性可分的问题来逐步了解SVM。
首先,让我们来了解一下什么是线性可分,什么是线性不可分。
对比两图,我们可以给出一个粗略的定义。如果能够找到一条直线将两个类分开,我们就称这是线性可分的,反之,可得什么是线性不可分。严格数学定义将在之后给出。
在图中的三条直线,哪条是更好的呢,或者说有更好的性能。
观察直线1,如果图示中标红的圈因为特征测量出现误差,出现在了直线1的上方(即红虚线所画的圈),但实际上它应在直线1的下方,此时就出现了错。可以看到直线2有更好的容错性。。
所以支持向量机(SVM)解决线性可分的问题的最终目的,就是如何找到这样一条直线能够将两个类分开,并且有好的容错性。
支持向量机(SVM)的作者想到了一个非常好的方法来找到这条直线。
观察图中的实线,将图中的直线平行地上下移动,当直线插到两个类中的向量时就停止,如图中虚线所示。这样我们就得到了这条直线的一个“取值范围”。将两条虚线的距离等于d,则使d最大的那条直线就是我们要找的直线。但是在整个“取值范围”内,有无数条这样的直线,距离两个分类均为d/2(在两条平行虚线的正中间)的直线是我们想要的直线。
我们称这个d为间隔(Margin),将平行线所插到的向量称为支持向量。
此时,我们给出定义:
1.训练数据及标签:(x1,y1),(x2,y2),...,(xn,yn)
x1,x2为向量,x1=(x11,x12,...,x1m)T。y1,y2为标签,取值为±1(二分类问题)。
2.线性模型:(w,b),wTx+b=0(超平面)
w为向量,w=(w1,w2,...,wm)。
在给出了线性模型的情况下,我们可以给出线性可分的严格数学定义:
对于{(xi,yi)},i=1~N,存在(w,b),使:对任意i~1~N,有
a.若yi=+1,则wTxi+b0
b.若yi=-1,则wTxi+b0
合写则为:yi(wTxi+b)0
即,满足yi(wTxi+b)0,为线性可分。
提出以下两点:
1.xi+b=0 与 a
xi+ab=0 是同一个平面,a∈
。
即我们可以放缩w和b的值。
2.点到平面距离公式:
有平面:x+
y+b=0,点(
,
),则d=
扩展到多维的情况,有超平面x+b=0,d=
因为我们可以用a来放缩w和b的值。使=1,则d=
此时,我们就可以定义一个线性可分情况下的优化问题:
最小化:(乘以
,是为了方便后续的求导计算,并不会影响最终结果)
限制条件:yi[xi+b]
1(i=1~N)
这是凸优化问题中的二次规划问题。
满足:目标函数是二次项,限制条件为一次项
此时,要么问题无解,要么只有一个极值。
现在,我们给出了在线性可分情况下,支持向量机(SVM)的优化目标。
下一节,我们将扩展到非线性可分情况下的支持向量机(SVM)。