6.1 间隔与支持向量

基本思想:对于二分类问题:即给定训练样本集D={(x1,y1),(x2,y2),….,(xm,ym)},yi∈{-1,+1},
分类学习最基本的想法就是基于训练集D在样本空间中找到一个划分超平面,将不同类别的样本分开。
超平面:ωTx+b=0 ,ω为法向量,决定了超平面的方向;b为位移项,决定了超平面与原点之间的距离。
样本空间中任意点x到超平面的距离可写为
γ=|ωTx+b|||ω||

如图6.2所示 γ=2||ω||表示“间隔”。而在ωTx+b=1与ωTx+b=−1上的样本点表示“支持向量”。
欲找到具有“最大间隔”的划分超平面,也就是求如下约束问题
maxω,b2||ω||
s.t.yi(ωTxi+b)≥1,i=1,2,...m(6.5)
为了最大化间隔,仅需最大化|ω||−1,这等价于最小化|ω||2.于是上式可以写为
minω,b12||ω||2
s.t.yi(ωTxi+b)≥1,i=1,2,...m(6.6)
这就是支持向量机(SVM)的基本型.
6.2对偶问题(参照李航的《统计学习与方法》第七章,这本书讲的详细一点)
我们希望求解式f(x)=ωTx+b来得到最大间隔划分超平面所对应的模型。
对式(6.6)使用拉格朗日乘子法可得到其“对偶问题”。具体来说,对式(6.6)每条约束添加拉格朗日乘子αi≥0,则该问题的拉格朗日函数可写为L(ω,b,α)=12||ω||2+∑i=1mαi(1−yi(ωTxi+b))(6.8)
其中α=(α1;α2;....αn),令L(ω,b,α)对ω和b的偏导为0,可得
ω=∑i=1mαiyixi (6.9)
0=∑i=1mαiyi (6.10)
将(6.9)代入(6.8)中,将L(ω,b,α)中的ω和b消去,得到(6.6)的对偶问题
maxα∑i=1mαi−12∑i=1m∑j=1mαiαjyiyjxTixj
s.t.0=∑i=1mαiyi
αi≥0(6.11)
将其改写为minα12∑i=1m∑j=1mαiαjyiyjxTixj−∑i=1mαi(7.22)
s.t.0=∑i=1mαiyi(7.23)
αi≥0(7.24)
定理7.2 设α∗=(α∗1,α∗2,...α∗l)是对偶最优化问题(7.22)~(7.24)的解,则存在下标j,使得α∗j>0,并可按下式求得原始最优化问题的解ω∗,b∗;ω∗=∑i=1mα∗iyixi(7.25)
b∗=yj−∑i=1mα∗iyi(xi⋅xj)(7.26)
综上所述:对于给定的线性可分训练数据集
1.先求(7.22)~(7.24)的解α∗.
2.再用(7.25),(7.26)求解原师问题的解ω∗,b∗.
这种算法称为线性可分支持向量机的对偶学习算法,是线性可分支持向量机学习的基本算法。
下面是仿照李航的《统计学习与方法》写的,公式的序号都是这本书上的
7.2线性支持向量机与软间隔最大化
7.2.1线性支持向量机
线性可分问题的支持向量机学习方法对学习不可分训练数据是不适用的,因为此时上述方法中的不等式约束并不能都成立,怎么才能将他扩展到线性不可分问题,这就需要修改硬间隔最大化,使其成为软间隔最大化。
假设给定一个特征空间上的训练数据集T={(x1,y1),(x2,y2),….,(xm,ym)},yi∈{-1,+1},再假设训练数据集不是线性可分的,通常情况是,训练数据中有一些特异点,将这些特异点除去后,剩下的大部分的样本点是线性可分的。
线性不可分意味着某些样本点(xi,yi)不能满足函数间隔大于等于1的约束条件,为了解决这个问题,可以对每一个样本点(xi,yi)引进一个松弛变量ζi>=0,使函数间隔加上松弛变量大于等于1,这样约束条件为yi(ωTxi+b)≥1−ζi.同时对每个松弛变量ζi,支付一个代价ζi,目标函数由原来的 12||ω||2变成
12||ω||2+C∑i=1Nξi(7.31)
这里C大于0,称为惩罚函数,一般由应用问题决定,C增大时,误分类的惩罚增大,C值小时对误分类的惩罚减小,最小化目标函数(7.31)包含两层含义:
1使12||ω||2尽量小,即间隔尽量大。
2.同时使误分类点的个数尽量小,C是调和二者系数。
线性不可分的线性支持向量机的学习问题变成如下凸二次规划问题(原始问题)minω,b12||ω||2+C∑i=1Nξi(7.32)
s.t.yi(ωTxi+b)≥1−ζi(7.33)
ζi>=0(7.34)
原始问题的(7.32)~(7.34)是一个凸二次规划问题,因而关于(ω,b,ξ)的解是存在的,可以证明w的解是唯一的(具体怎么证,我也不会),但b的解不唯一。
设问题(7.32)~(7.34)的解是ω∗,b∗,于是得到可分离超平面ω∗x+b∗=0称这为训练样本不可分时的线性支持向量机,简称为线性支持向量机。显然,线性支持向量机包含线性可分支持向量机。由于现实中训练数据往往时不可分的,线性支持向量机更具有广的适用性。
7.2.2学习的对偶算法
原始问题(7.32)~(7.34)的对偶问题是
minα12∑i=1N∑j=1Nαiαjyiyj(xixj)−∑i=1Nαi(7.37)
s.t.0=∑i=1mαiyi(7.38)
o≤αi≤C(7.39)
定理7.3 设α∗=(α∗1,α∗2,...α∗N)是对偶问题(7.37)~(7.39)的一个解,若存在α∗的一个分量α∗j,o<αi<C,则原始问题(7.32)~(7.34)的解ω∗,b∗可按下式求得:ω∗=∑i=1mα∗iyixi(7.50)
b∗=yj−∑i=1mα∗iyi(xi⋅xj)(7.51)
这样求得的ω∗x+b∗=0就是所求得的分离超平面。
下面说一下拉格朗日乘子法的内容(周志华《机器学习》附录B.1)
首先说一下他的用途:拉格朗日乘子法是一种寻找多元函数在一组约束下的极值的方法。他可以将约束优化问题转化为无约束优化问题。
接下来,是推导的过程(按照约束条件来分,可以分为等式约束和不等式约束)
1.等式约束
minf(x)
s.t.g(x)=0
2.不等式约束minf(x)
s.t.g(x)≤0
首先来看等式约束。一个基本的理论(1.约束曲面上的任意点x,该点的梯度∇g(x)正交于约束曲面。2.在最优点x∗,目标函数在该点的梯度∇f(x∗)正交于约束曲面。这些是场论里边的内容。可以先记住。)
如上图(a)。得到梯度∇g(x)和∇f(x)的方向必相同或相反,即存在λ≠0使得∇f(x∗)+λ∇g(x∗)=0(B.1)
接下来定义拉格朗日函数L(x,λ)=f(x)+λg(x)(B.2)
不难发现,将其对x的偏导数∇xL(x,λ)置零即得(B.1),同时,将其对λ的偏导数∇λL(x,λ)置零即得约束条件g(x)=0,于是,原约束优化问题转化为拉格朗日得无约束优化问题。
下面讨论不等式约束g(x)≤0,此时最优点x∗或者在g(x)<0的区域中,或者在边界g(x)=0上。对于g(x)<0的情形,相当于令λ=0,∇f(x)=0来获得最优点,当g(x)=0时,问题中的可行域是在g(x)≤0的一侧,而g(x)的梯度是指向大于0的一侧的,而求f(x)的极小值,所以∇f(x)的方向指向可行域的一侧的,两个梯度一定相反。所以存在λ>0使得∇f(x∗)+λ∇g(x∗)=0,整合两种情形即得KKT条件g(x)≤0
λ≥0
λg(x)=0
以上就是KKT条件的来源。
SMO算法
SMO的引出:解上边的二次规划问题,固然可以用通用的二次规划来求解;然而该问题的规模正比与训练样本数,这会在实际任务中造成很大的开销。为了避开这个障碍,人们提出很多高效算法,SMO是其中一个著名的代表。
SMO的基本思路:先固定αi之外的所有参数,然后求αi上的极值。由于存在约束∑i=1mαiyi=0,若固定αi之外的其他变量,则αi可由其他变量导出。于是,SMO每次选择两个变量αi和αj,并固定其他参数。这样在参数初始化后,SMO不断执行如下两个步骤直至收敛:
∙ 选取一对需更新的变量αi和αj;
∙ 固定αi和αj以外的参数,求解对偶问题获得更新后的αi和αj。
下面是αi和αj的选取方法:
只需选取αi和αj中有一个不满足KKT条件,目标函数(6.11)就会在迭代后增大.直观来看,KKT条件违背的程度越大,则变量更新后可能导致的目标函数值增幅越大。于是,SMO先选取违背KKT条件程度最大的变量。第二个变量选择一个使目标函数值增长最快的变量,但由于比较各变量所对应的目标函数值增幅的复杂度过高,因此SMO采用了一个启发式:选取的2变量所对应的样本之间的间隔最大。一种直观的解释是,这两个变量有很大的差别,与对两个相似的变量进行相比,对他们进行更新会带给目标函数值更大的变化。
SMO算法之所以高效,恰由于在固定其他参数后,仅优化两个参数的过程能做到非常高效。具体来说,仅考虑αi和αj时,式(6.11)中的约束可重写为
αiyi+αjyj=c,αi≥0,αj≥0(6.14)
其中c=−∑k≠i,jαkyk(6.15)
是使∑i=1mαiyi=0成立的常数。用αiyi+αjyj=c(6.16)
消去式(6.11)中的变量αj,则得到一个关于αi的单变量二次规划问题,仅有的约束是o≤αi不难发现,这样的二次规划具有闭式解,于是不必调用数值优化算法可高效的计算更新后的αi和αj。
确定偏移项b:注意到对任意支持向量(xs,ys)都有ysf(xs)=1,即
ys(∑i∈sαiyixTixs+b)=1(6.17)
其中s为所有支持向量的下标集。理论上,可选取任意支持向量并通过求解式(6.17)获得b,但现实任务中常采用一种更鲁棒的做法:使用所有支持向量求解的平均值。