本文参考自http://cs229.stanford.edu/notes/cs229-notes3.pdf,但采用《统计学习方法》中的符号系统

数据集D={(x(1),y(1)),(x(2),y(2)),,(x(m),y(m))}x(i)Rny(i){1,1}

超平面wTx+b=0wRnbR

假设数据集D线性可分,则存在超平面wTx+b=0,当y(i)=1时,wTx(i)+b>0,当y(i)=1时,wTx(i)+b<0

【立体几何知识】

(x0,y0,z0)到平面Ax+By+Cz+D=0的距离为

d=|Ax0+By0+Cz0+D|A2+B2+C2

【几何间隔】

类似的,样本点(x(i),y(i))到超平面wTx+b=0的距离γ(i)=|wTx(i)+b|w,称为几何间隔

利用标签y(i)可去掉分子的绝对值符号,得到γ(i)=y(i) (wTx(i)+b)w

对于数据集D,所有样本的几何间隔中的最小值,γD=min{γ(1),γ(2),...,γ(m)},称为超平面wTx+b=0关于数据集D的几何间隔

【CS229上关于几何间隔的证明】

SVM——硬间隔最大化

如图所示,ww为分类超平面wx+b=0的单位法向量,向量OA的坐标(也是点A的坐标)为xi,样本xi离超平面的距离为di,则向量BA的坐标为diww

于是OB=OABA,即向量OB的坐标(也是点B的坐标)为xidiww

由于点B在超平面上,代入超平面方程,得w(xidiww)+b=0

解得di=wxi+bw

【函数间隔】

超平面wx+b=0关于样本点(xi,yi)的函数间隔定义为几何间隔的w倍,即γ=yi(wxi+b)

对于数据集D,所有样本的函数间隔中的最小值,γD=min{γ1,γ2,...,γn},称为超平面wx+b=0关于数据集D的函数间隔

函数间隔与几何间隔的关系为di=γiw

【间隔最大化】

SVM的目标是寻找一个几何间隔最大的超平面,最优化问题表达如下:

maxw,b dDs.t. yi(wxi+b)wdD

代入dD=γDw,将几何间隔替换为函数间隔

maxw,b γDws.t. yi(wxi+b)wγDw

化简s.t.部分,得

maxw,b γDws.t. yi(wxi+b)γD

现在分析一下γD对最优解的影响

γD=1时,得到一组最优解w1b1,当γD=2时,得到一组最优解w2b2

这两组最优解的关系为:w2=2w1b2=2b1,是成比例的,所以将γD取一个特殊值即可,此处取γD=1,于是得到

maxw,b 1ws.t. yi(wxi+b)1

因为maxw,b 1wminw,b wminw,b w2minw,b 12w2

所以得到最终的线性可分SVM的最优化问题为:

minw,b 12w2s.t. yi(wxi+b)1

我们已经得到了SVM的原始问题

minw,b 12w2

s.t. 1yi(wxi+b)0

这个问题属于凸二次规划问题,已经可以使用相关的算法包来求解了,但是《机器学习》(周志华)中说“我们可以有更高效的解法”,这个更高效的解法就是转而去解原始问题对应的对偶问题

对于SVM,原始问题和对偶问题是等价的(d=p),所以求得了对偶问题的最优解d,就相当于得到了原始问题的最优解p

【SVM的对偶问题】

对偶问题都是从定义拉格朗日函数开始的

L(w,b,α)=12w2+i=1nαi[1yi(wxi+b)]=12w2i=1nαiyi(wxi+b)+i=1nαi=12w2i=1nαiyixiwi=1nαiyib+i=1nαi=12w2wi=1nαiyixibi=1nαiyi+i=1nαi

求解对偶问题实际上是求解拉格朗日函数的极大极小问题:maxα:αi0minw,bL(w,b,α)
(记住对偶问题是先挑“矮个儿”再挑“高个儿”,先处理原变量,再处理对偶变量)

第一步,求minw,bL(w,b,α),其中wb为变量,α为常量同时消去变量wb

wL(w,b,α)=wi=1nαiyixi=0

bL(w,b,α)=i=1nαiyi=0

w=i=1nαiyixi

i=1nαiyi=0

上述2个式子的意义略有区别,式1中可将变量w用变量α代替,而式2却不包含变量b,是一个实实在在的约束条件,需要将该约束条件带到第二步中

但不管怎样,将上述2个式子代入L(w,b,α)中,总可以消去变量wb
(注意:在第2项中,当代入w=i=1nαiyixi时,因为L(w,b,α)中使用过了下标i,因此需要把下标i换为j

minw,bL(w,b,α)=12w2wi=1nαiyixibi=1nαiyi+i=1nαi=12i=1nj=1nαiαjyiyjxixj(j=1nαjyjxj)(i=1nαiyixi)b0+i=1nαi=12i=1nj=1nαiαjyiyjxixji=1nj=1nαiαjyiyjxixj+i=1nαi=12i=1nj=1nαiαjyiyjxixj+i=1nαi

minw,bL(w,b,α)=12i=1nj=1nαiαjyiyjxixj+i=1nαi(仅包含变量α

第二步,求maxα:αi0minw,bL(w,b,α),即得到如下的对偶问题

maxα 12i=1nj=1nαiαjyiyjxixj+i=1nαi

s.t. i=1nαiyi=0(在第一步中得到的约束条件,照抄过来)
αi0

因为对于原始问题,12w21yi(wxi+b)均为凸函数,没有等式约束,并且存在(w,b)使得所有不等式约束1yi(wxi+b)0成立(因为规定了数据集线性可分)

所以存在一组(w,b,α),满足p=d=L(w,b,α)

故求解对偶问题等价于求解原始问题,即求解对偶问题得到的最优解其实就是原始问题的最优解

【KKT条件】

原问题的约束
 1yi(wxi+b)0i=1,2,,n

梯度等于0
 wL(w,b,α)=0w=i=1nαiyixi
 bL(w,b,α)=0i=1nαiyi=0

不等式约束的拉格朗日乘子大于等于0
 αi0i=1,2,,n

对偶互补条件
 αi[1yi(wxi+b)]=0i=1,2,,n

【求解对偶问题】

maxα 12i=1nj=1nαiαjyiyjxixj+i=1nαi
s.t. i=1nαiyi=0
αi0

该对偶问题是凸二次规划问题,仍然可以使用现成的算法包求解,但仍然不够高效(该问题的规模正比于训练样本数——《机器学习》周志华),因此根据该问题定制了一个更高效的算法,即SMO算法

求解对偶问题(使用SMO算法),得到最优解α,此时任务还没有完成,还需要利用α,求出wb

对于w,利用KKT条件②计算:w=i=1nαiyixi

对于b,有KKT条件⑤成立:中的对偶互补条件αi[1yi(wxi+b)]=0成立

对于α中的一个满足αj>0的分量αj,有αj[1yj(wxj+b)]=01yj(wxj+b)=0

yj(wxj+b)1=0yj(wxj+b)yj2=0(使用yj2替换1)wxj+byj=0b=yjxjwb=yjxji=1nαiyixi(代入w=i=1nαiyixib=yji=1nαiyixixj

综上所述,使用α计算wb的公式为
w=i=1nαiyixi
b=yji=1nαiyixixj(样本(xj,yj)对应的αj>0

理论上有多少个支持向量,就能算出多少个参数b,这时,对所有b求平均值即可

计算出wb之后,对于一个未知的样本xtest,我们需要计算wTxtest+b

我们仍然将w展开,看看会得到什么

wTxtest+b=(i=1nαiyixi)Txtest+b=i=1nαiyixi,xtest+b

我们发现,除了支持向量以外的αi都是等于0的,xtest只需要与支持向量做内积即可

相关文章: