机器学习实战——SVM(1/3)

SVM(支持向量机)是典型的二分类判别式模型,这种方法以Rosenblatt于1957年提出的感知机模型的基础上,都是通过训练一个分类超平面之后,作为分类的决策函数,然后对未知的样本进行预测。通过对输入特征使用法向量和截距 w=(w1,w2,...wn)b 进行线性组合,得到超平面,最终的决策函数也和感知机一样,为符号函数 f(x)=sign(w⃗ x⃗ +b) ,符号函数大于0则为正类( w⃗  指向的一侧)否则为负类( w⃗  指向的对侧)。但SVM与感知机不同的是,SVM训练模型的策略是分类平面的间隔最大化。感知机利用误分类最小的策略求得超平面,此时当数据线性可分时是无穷多个的;SVM使用的间隔最大化求得分类超平面,因此得到的解是唯一的。
根据训练数据的特性,从模型的简单到复杂一共有三类不同的SVM模型,分别是:
1. 训练数据线性可分时,使用硬间隔最大化,得到线性可分SVM
2. 训练数据近似线性可分,使用软间隔最大化,得到软间隔线性SVM
3. 当训练数据线性不可分时,使用核方法将训练数据映射到高维可分的情况,并使用软间隔最大化,得到非线性SVM

间隔的定义

首先,回顾二维平面解析几何上,对于给定的直线 w1x+w2y+b=0 ,平面上任意一点 (xi,yi) 到该直线的距离 d 如下图所示:
机器学习实战——SVM(1/3)_第1张图片
设过 (xi,yi) 做直线的垂线相交于 (x,y) 点,这条直线与直线的法向量平行以及 (x,y) 位于直线上,可以得到如下方程:

xxiw1=yyiw2w1x+w2y+b=0

联立求解上述方程得到交点 (x,y) ,从而可以计算距离 d=(xxi)2+(yyi)2 ,结果如下:
x=w22xiw1w2yibw1w21+w22y=w21yiw1w2xibw2w21+w22d=(w1xi+w2yi+b)2w21+w22=|w1xi+w2yi+b|w21+w22

从中可以看出,给定点 (xi,yi) 离直线的距离的就是将改点带入直线方程得到结果后除以直线法向量的模长。这是在二维平面下的情形,当维度扩展到 n 维时,上述结论依然成立。
下面回到作为分类的超平面问题上来,对给定特征空间上的训练数据集
T={(x1,y1),(x2,y2),...,(xN,yN)}

其中 xiRnyi{1,+1},i=1,2,3...N 。对于任意一个超平面,数据集中某个点离超平面 (w,b) 的远近可以表示分类超平面的优劣。

函数间隔

样本集合 T 中一个特定的数据点 (xi,yi) 到超平面的函数间隔 γ^i

γ^i=yi(wxi+b)

由于 yi{1,+1} ,因此上述定义就是前面推导的 点到直线距离的公式中的 分子部分,这里使用两个部分的乘积永远为正数的技巧就可以去掉绝对值。
对于 T 中所有点离超平面的函数间隔的最小值,定义为样本集合 T 到超平面 (w,b) 的函数间隔 γ^
γ^=min1iNγ^i

函数间隔表征了分类预测的正确性和确定度,但是对于给定的样板点,分类超平面 (w,b) ,也就是 wx+b=0 ,如果成比例改变 w,b 之后,当然相应的函数间隔也成比例发生变化。但这只是从代数上进行的变换,从几何意义上来说,成比例改变后分类超平面并没有发生变化,而样本点也没有变化,因此理论上度量的距离也应该不发生变化才行,因此 函数间隔这个度量的鲁棒性不够好,需要进行规范化度量表示。这样和前面的点到直线的距离公式符合,因为没有除以分子那一部分。这样就很自然得到了下面的几何间隔的定义。

几何间隔

对于样本集合中的某一点 (xi,yi) 到超平面 (w,b) 的几何间隔定义为

γi=yi(wxi+b)||w||2

这也就是高维空间中的某店 (xi,yi) 到超平面的实际距离,在维度为二维平面时就对应前面的点到直线的距离公式。
定义样本集合到超平面的几何间隔为所有样本点到超平面的几何间隔最小的距离
γ=min1iNγi

从上述定义可以看出只有当 ||w||2=1 时,函数间隔与几何间隔相等。

线性可分SVM

支持向量机学习的基本策略就是间隔最大化,首先需要定义好间隔才能进行下一步工作。对于线性可分的数据集,通过上述定义的几何间隔最大化求解即可,可以归结为求解一个凸二次规划问题,这个问题可以表述为如下的数学描述

maxw,bγs.t.yi(wxi+b)||w||2γ,i=1,2,...N

上述问题可以更加函数间隔与几何间隔的关系导出如下等价的数学描述
maxw,bγ^||w||2s.t.yi(wxi+b)γ^,i=1,2,...N

由于函数间隔的改变对优化问题的解没有影响,因此可以去 γ^=1 ,则可以等价变换为如下的标准优化问题形式:
minw,b12||w||2s.t.yi(wxi+b)10,i=1,2,...N

使用了系数 12 是为了求导的方便,并不影响优化的解。这样使用优化算法求得的解 (w,b) 就是得到了分类超平面。

支持向量与间隔边界

在线性可分的情况下,训练数据集合中的样本点离分类超平面最近的样本点就是支持向量,这就是支持向量机的名称的由来。过这些支持向量并与分类超平面平行的超平面就是间隔边界。支持向量是湿的上述求解的优化问题的约束条件的等号成立的点,也就是这些点决定了最终的分类超平面。支持向量示意图如下所示(红色为分类超平面,两侧分别有两个间隔界面,位于间隔界面上的点就是支持向量)
机器学习实战——SVM(1/3)_第2张图片

学习算法

对于上述的约束优化问题,需要使用经典的Language函数的方法进行求解,对于每个约束条件引入一个乘子 λi0(i=1,2...N) ,得到如下Language函数:

L(w,b,λ)=12||w||2i=1Nλi(yi(wxi+b)1)

由对偶性可知,原始问题的对偶问题是极大极小化问题
maxλminw,bL(w,b,λ)

先对 w,b L(w,b,λ) 的最小值,然后对 λ 求最大值即可。
1. 求 minw,bL(w,b,λ)
分别对 w,b 求导,此时将 λ 看做常数,则与感知机进行学习时求导的结果相同
wL=wi=1Nλiyixi=0bL=i=1Nλiyi=0

上述可以求得 wi=Ni=1λiyixi 以及一个新的约束条件 Ni=1λiyi=0
2. 求 maxλL(λ)
将上述的求导结果带入原问题,得到外层的优化问题
maxλL(λ)=12i=1Nj=1Nλiλjyiyj(xixj)i=1Nλiyi(xij=1Nλjyjxj+b)+i=1Nλi=12i=1Nj=1Nλiλjyiyj(xixj)+i=1Nλi=minλ12i=1Nj=1Nλiλjyiyj(xixj)i=1Nλis.t.i=1Nλiyi=0,λi0,i=1,2...N

对于上述问题,设求得的最优解为 λ ,则得到原始问题的最优解 w
w=i=1Nλiyixi

对于其中的一个大于0的 λi 可以得到对于的样本点 (xi,yi) 是位于约束直线上,也就是原始问题约束取等号的直线上:
yi(wxi+b)1=0

由于 y2i=1 ,因此对上述等式两边同时乘以 yi ,就得到
y2i(wxi+b)yi=0b=yiwxi=yij=1Nλjyj(xjxi)

根据上述推导,就可以得到最终的分类决策超平面
wx+b=0

对于线性可分的问题,上述寻找最大间隔超平面的方法是完美的,使用的是硬间隔最大化,但是这是在数据理想的情况下,现实情形中并不满足上述条件,而是存在多种噪声,因此需要有更一般的算法才能进行实用。
上述所有问题都归结为对偶问题的最优化求解 λ ,关于这个的具体求解见后续实战给出。

你可能感兴趣的:(SVM,支持向量机)