支持向量机
支持向量机(Support Vector Machine,简称SVM),是机器学习中运用较为广泛的一种的算法,在神经网络出现之前,应用十分广泛。SVM算法是一种二分类算法,通过构建超平面函数,来进行样本分类,如下图所示:
如上图,我们希望找到紫色的边界函数(分类超平面),因为紫色的线有更大的几何间距,对于离群点有更好的兼容性,鲁棒性更好,即泛化能力更好。
问题分析
对于样本空间:
T={(x1,y1),(x2,y2),⋯,(xN,yN)}
其中,xi∈Rn,yi∈{+1,−1},i=1,2,⋯,N
xi为第i个特征向量,也称为实例,yi为xi的类标记,当yi=+1时,称xi为正例;当yi=−1时,称xi为负例,(xi,yi)称为样本点。
假设超平面决策边界函数为:wT⋅x+b=0
其中w=(w1,w2,⋯,wN)为法向量,决定了超平面的方向,b为位移项,决定了超平面与原点之间的距离。
由于超平面由w和b唯一确定,故可以将超平面函数记为(w,b)
又根据,点到平面的距离公式可得,任一点x到超平面(w,b)的距离表示为:
r=∣∣w∣∣∣wTx+b∣
其中r表示距离,∣∣w∣∣表示法向量w的模。
假设超平面(w,b)能对样本进行正确分类,那么对于(xi,yi)∈T,若yi=+1,则有wTxi+b>0,相反,若若yi=−1,则有wTxi+b<0。我们假设
{wTxi+b>=+1,yi=+1wTxi+b<=−1,yi=−1
这两个式子表示的几何意义如下所示:
在图中,有红色边框的样本在上式所表示的平面之上,我们称之为“支持向量”,上式两个公式之间的距离可以表示为:
r=∣∣w∣∣2
该公式由平面间距离公式而得,它被称作“间隔”。
我们的目的是为了求得“最大间隔”,即
w,bmax∣∣w∣∣2
其中yi(wTxi+b)>=1,i=1,2,⋯,N
将最大化问题转化为最小化问题:
w,bmin21∣∣w∣∣2
其中yi(wTxi+b)>=1,i=1,2,⋯,N
这就是支持向量机的基本型,也即优化目标函数。
解释:
为什么选
{wTxi+b>=+1,yi=+1wTxi+b<=−1,yi=−1
作为样本边界平行函数?
已知,任意一个空间平面可表示为:
Ax+By+Cz+d=0
而平面的平行向量公式为:
Mx+Ny+Wz+e=0
其中,MA=NB=WC≠ed,如果比例相等的话,表示的是同一个平面函数。且平行平面之间的距离公式为:
r=A2+B2+C2∣d−e∣
所以针对这种情况,我们完全可以固定分子,通过调整分母大小来改变平行平面之间的距离。不仿,令∣d−e∣=1,我们可以通过改变法向量的大小来改变距离大小。再次返回到我们的问题,由于对超平面(w,b)的系数w和b进行等比例缩放不改变平面在空间中的几何位置,所以将函数差值固定为1,通过调节w也可以起到改变间距的目的。所以我们假设的边界函数:
{wTxi+b>=+1,yi=+1wTxi+b<=−1,yi=−1
其实表示的是平行函数系,即平行超平面的集合。
拉格朗日对偶性
通过上面的分析,支持向量机算法要优化的目标函数为:
w,bmin21∣∣w∣∣2其中yi(wTxi+b)>=1,i=1,2,⋯,N
对于此类问题的优化求解,我们可以利用凸优化的凸二次规划来求解具体做法请参考机器学习算法系列(12):SVM(1)—线性可分支持向量机,也可以采用拉格朗日对偶性来求解。
拉格朗日乘子法的一般形式:
xminf0(x)
约束条件
fi(x)≤0i=1,2,⋯,m
hi(x)=0i=1,2,⋯,q
进一步转化为:
minL(x,λ,v)=f0(x)+∑i=1mλifi(x)+∑i=1qvihi(x)
根据以上一般形式,我们对最大间隔进行变形,因为有N个样本:
L(w,b,a)=21∣∣w∣∣2−i=1∑Nai(yi(w⋅xi+b)−1)
其中,a=(a1,a2,⋯,aN)T
然后我们令θ(w)=ai≥0maxL(w,b,a)
容易验证,当某个约束条件不满足时,例如 yi(wTxi+b)<1,那么我们显然有 θ(w)=∞(只要令αi=∞即可)。而当所有约束条件都满足时,则有 θ(w)=21∣∣w∣∣2,亦即我们最初要最小化的量。因此,在要求约束条件得到满足的情况下最小化 21∣∣w∣∣2实际上等价于直接最小化 θ(w)(当然,这里也有约束条件,就是 αi≥0,i=1,…,n),因为如果约束条件没有得到满足,θ(w) 会等于无穷大,自然不会是我们所要求的最小值。具体写出来,我们现在的目标函数变成了:
w,bminθ(w)=w,bminai≥0maxL(w,b,a)=p∗
这里用 p∗ 表示这个问题的最优值,这个问题和我们最初的问题是等价的。不过,现在我们来把最小和最大的位置交换一下:
ai≥0maxw,bminL(w,b,a)=d∗
当然,交换以后的问题不再等价于原问题,这个新问题的最优值用 d∗ 来表示。并,我们有 d∗≤p∗,这在直观上也不难理解,最大值中最小的一个总也比最小值中最大的一个要大吧!总之,第二个问题的最优值d∗,在这里提供了一个第一个问题的最优值p∗ 的一个下界,在满足某些条件的情况下,这两者相等,这个时候我们就可以通过求解第二个问题来间接地求解第一个问题。这就是KKT对偶性原则(其实没必要理解什么是KKT),我们需要知道的是:在满足所有约束条件的情况下:
w,bminai≥0maxL(w,b,a)=ai≥0maxw,bminL(w,b,a)=d∗=p∗
综合以上的所有结论,整理如下:
θ(w)=21∣∣w∣∣2
求解w,bmin21∣∣w∣∣2转化为求解minθ(w),即
w,bmin21∣∣w∣∣2=w,bminθ(w)=w,bminai≥0maxL(w,b,a)
又根据KKT对偶性可得:
w,bmin21∣∣w∣∣2=ai≥0maxw,bminL(w,b,a)
推导过程
- 第一步,求解w,bminL(w,b,a)
对拉格朗日函数L(w,b,a)=21∣∣w∣∣2−i=1∑Nai(yi(w⋅xi+b)−1)
的w,b分别求偏导,并令其偏导为0,求极值,可得:
∂w∂L=w−i=1∑Naiyixi=0
∂b∂L=i=1∑Naiyi=0
将以上两式代入拉格朗日公式可得:
L(w,b,a)=21i=1∑Nj=1∑Naiajyiyj(xi⋅xj)−i=1∑Naiyi((j=1∑Najyjxj)⋅xi+b)+i=1∑Nai=−21i=1∑Nj=1∑Naiajyiyj(xi⋅xj)+i=1∑Nai
- 第二步,求解ai≥0maxw,bminL(w,b,a)
结合第一步,我们第二步要求的目标函数为:
amaxi=1∑Nai−21i=1∑Nj=1∑Naiajyiyj(xi⋅xj)
其中约束条件为:
i=1∑Naiyi=0
ai≥0,i=1,2,⋯,N
根据式子形式,我们将求最大值问题转换为求最小值问题:
amin 21i=1∑Nj=1∑Naiajyiyj(xi⋅xj)−i=1∑Nai
其中约束条件为:
i=1∑Naiyi=0
ai≥0,i=1,2,⋯,N
至此推导至这一步,已经可以通过样本计算出ai的值了,然后又根据ai和w,b的关系,我们可以求出模型:
f(x)=wTx+b=(i=1∑Naiyixi)Tx+b
对于b的计算,选取不为0的ai,然后代入公式:
b=yi−i=1∑Naiyi(xi⋅xj)
举例:
假设有三个样本点,其中正例X1(3,3),X2(4,3),负例X3(1,1)
求解:
amin 21i=1∑Nj=1∑Naiajyiyj(xi⋅xj)−i=1∑Nai
约束条件为:
{ai+a2−a3=0ai≥0,i=1,2,3
示意图如下所示:
将数据代入求解公式可得:
21(18a12+25a22+2a32+42a1a2−12a1a3−14a2a3)−a1−a2−a3
由于ai+a2−a3=0,化简可得:
4a12+213a22+10a1a2−2a1−2a2
分别对a1和a2求偏导,令偏导等于0,可得,a1=1.5,a2=−1
这显然与ai≥0相违背,所以解应该在边界上,分别令a1=0,得a2=−132,同样不满足条件。
令a2=0,满足条件,可得最小值在(0.25,0,0.25)取得。
将a的取值代入w=i=1∑Naiyixi
可得w=41∗1∗(3,3)+41∗(−1)∗(1,1)=(21,21)
b=yi−i=1∑Naiyi(xi⋅xj)=1−(41∗1∗18+41∗(−1)∗6)=−2
故超平面方程为:0.5x1+0.5x2−2=0
拉格朗日参数分析
对于拉格朗日乘子式,我们为约束条件添加参数ai,为了求得
ai≥0maxL(w,b,a)=ai≥0max21∣∣w∣∣2−i=1∑nai(yi(wTxi+b)−1)
当样本点不在边界函数上时,函数间隔即yi(wTxi+b)−1大于1,而为了让式子求得最大值,此时对应的ai必须等于0,而对于分布在边界函数上的样本,yi(wTxi+b)−1=0,此时由于ai≥0
所以支持向量机的决策边界函数,仅有ai≠0的量所决定,即仅有在边界函数上的点所决定。
注意:边界函数为:{wTxi+b>=+1,yi=+1wTxi+b<=−1,yi=−1
决策边界为:
wT⋅x+b=0