本文参考自http://cs229.stanford.edu/notes/cs229-notes3.pdf,但采用《统计学习方法》中的符号系统
数据集D={(x(1),y(1)),(x(2),y(2)),⋯,(x(m),y(m))},x(i)∈Rn,y(i)∈{−1,1}
超平面wTx+b=0,w∈Rn,b∈R
假设数据集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上关于几何间隔的证明】


如图所示,w∥w∥为分类超平面wx+b=0的单位法向量,向量OA−→−的坐标(也是点A的坐标)为xi,样本xi离超平面的距离为di,则向量BA−→−的坐标为di⋅w∥w∥
于是OB−→−=OA−→−−BA−→−,即向量OB−→−的坐标(也是点B的坐标)为xi−di⋅w∥w∥
由于点B在超平面上,代入超平面方程,得w(xi−di⋅w∥w∥)+b=0
解得di=wxi+b∥w∥
【函数间隔】
超平面wx+b=0关于样本点(xi,yi)的函数间隔定义为几何间隔的∥w∥倍,即γ=yi(wxi+b)
对于数据集D,所有样本的函数间隔中的最小值,γD=min{γ1,γ2,...,γn},称为超平面wx+b=0关于数据集D的函数间隔
函数间隔与几何间隔的关系为di=γi∥w∥
【间隔最大化】
SVM的目标是寻找一个几何间隔最大的超平面,最优化问题表达如下:
maxw,b dDs.t. yi(wxi+b)∥w∥⩾dD
代入dD=γD∥w∥,将几何间隔替换为函数间隔
maxw,b γD∥w∥s.t. yi(wxi+b)∥w∥⩾γD∥w∥
化简s.t.部分,得
maxw,b γD∥w∥s.t. yi(wxi+b)⩾γD
现在分析一下γD对最优解的影响
当γD=1时,得到一组最优解w∗1,b∗1,当γD=2时,得到一组最优解w∗2,b∗2
这两组最优解的关系为:w∗2=2w∗1,b∗2=2b∗1,是成比例的,所以将γD取一个特殊值即可,此处取γD=1,于是得到
maxw,b 1∥w∥s.t. yi(wxi+b)⩾1
因为maxw,b 1∥w∥⇔minw,b ∥w∥⇔minw,b ∥w∥2⇔minw,b 12∥w∥2
所以得到最终的线性可分SVM的最优化问题为:
minw,b 12∥w∥2s.t. yi(wxi+b)⩾1
我们已经得到了SVM的原始问题
minw,b 12∥w∥2
s.t. 1−yi(wxi+b)⩽0
这个问题属于凸二次规划问题,已经可以使用相关的算法包来求解了,但是《机器学习》(周志华)中说“我们可以有更高效的解法”,这个更高效的解法就是转而去解原始问题对应的对偶问题
对于SVM,原始问题和对偶问题是等价的(d∗=p∗),所以求得了对偶问题的最优解d∗,就相当于得到了原始问题的最优解p∗
【SVM的对偶问题】
对偶问题都是从定义拉格朗日函数开始的
L(w,b,α)=12∥w∥2+∑i=1nαi[1−yi(wxi+b)]=12∥w∥2−∑i=1nαiyi(wxi+b)+∑i=1nαi=12∥w∥2−∑i=1nαiyixiw−∑i=1nαiyib+∑i=1nαi=12∥w∥2−w∑i=1nαiyixi−b∑i=1nαiyi+∑i=1nαi
求解对偶问题实际上是求解拉格朗日函数的极大极小问题:maxα:αi⩾0minw,bL(w,b,α)
(记住对偶问题是先挑“矮个儿”再挑“高个儿”,先处理原变量,再处理对偶变量)
第一步,求minw,bL(w,b,α),其中w,b为变量,α为常量同时消去变量w,b
令∇wL(w,b,α)=w−∑i=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,α)中,总可以消去变量w,b
(注意:在第2项中,当代入w=∑i=1nαiyixi时,因为L(w,b,α)中使用过了下标i,因此需要把下标i换为j)
minw,bL(w,b,α)=12∥w∥2−w∑i=1nαiyixi−b∑i=1nαiyi+∑i=1nαi=12∑i=1n∑j=1nαiαjyiyjxixj−(∑j=1nαjyjxj)(∑i=1nαiyixi)−b⋅0+∑i=1nαi=12∑i=1n∑j=1nαiαjyiyjxixj−∑i=1n∑j=1nαiαjyiyjxixj+∑i=1nαi=−12∑i=1n∑j=1nαiαjyiyjxixj+∑i=1nαi
即minw,bL(w,b,α)=−12∑i=1n∑j=1nαiαjyiyjxixj+∑i=1nαi(仅包含变量α)
第二步,求maxα:αi⩾0minw,bL(w,b,α),即得到如下的对偶问题
maxα −12∑i=1n∑j=1nαiαjyiyjxixj+∑i=1nαi
s.t. ∑i=1nαiyi=0(在第一步中得到的约束条件,照抄过来)
αi⩾0
因为对于原始问题,12∥w∥2和1−yi(wxi+b)均为凸函数,没有等式约束,并且存在(w,b)使得所有不等式约束1−yi(wxi+b)⩽0成立(因为规定了数据集线性可分)
所以存在一组(w∗,b∗,α∗),满足p∗=d∗=L(w∗,b∗,α∗)
故求解对偶问题等价于求解原始问题,即求解对偶问题得到的最优解其实就是原始问题的最优解
【KKT条件】
原问题的约束
① 1−yi(wxi+b)⩽0i=1,2,⋯,n
梯度等于0
② ∇wL(w,b,α)=0⇒w=∑i=1nαiyixi
③ ∇bL(w,b,α)=0⇒∑i=1nαiyi=0
不等式约束的拉格朗日乘子大于等于0
④ αi⩾0i=1,2,⋯,n
对偶互补条件
⑤ αi[1−yi(wxi+b)]=0i=1,2,⋯,n
【求解对偶问题】
maxα −12∑i=1n∑j=1nαiαjyiyjxixj+∑i=1nαi
s.t. ∑i=1nαiyi=0
αi⩾0
该对偶问题是凸二次规划问题,仍然可以使用现成的算法包求解,但仍然不够高效(该问题的规模正比于训练样本数——《机器学习》周志华),因此根据该问题定制了一个更高效的算法,即SMO算法
求解对偶问题(使用SMO算法),得到最优解α∗,此时任务还没有完成,还需要利用α∗,求出w∗,b∗
对于w∗,利用KKT条件②计算:w∗=∑i=1nα∗iyixi
对于b∗,有KKT条件⑤成立:中的对偶互补条件α∗i[1−yi(w∗xi+b∗)]=0成立
对于α∗中的一个满足α∗j>0的分量α∗j,有α∗j[1−yj(w∗xj+b∗)]=0⇒1−yj(w∗xj+b∗)=0
yj(w∗xj+b∗)−1yj(w∗xj+b∗)−y2jw∗xj+b∗−yjb∗b∗b∗=0=0(使用y2j替换1)=0=yj−xjw∗=yj−xj∑i=1nα∗iyixi(代入w∗=∑i=1nα∗iyixi)=yj−∑i=1nα∗iyixixj
综上所述,使用α∗计算w∗,b∗的公式为
w∗=∑i=1nα∗iyixi
b∗=yj−∑i=1nα∗iyixixj(样本(xj,yj)对应的αj>0)
理论上有多少个支持向量,就能算出多少个参数b∗,这时,对所有b∗求平均值即可
计算出w∗,b∗之后,对于一个未知的样本xtest,我们需要计算wTxtest+b
我们仍然将w展开,看看会得到什么
wTxtest+b=(∑i=1nαiyixi)Txtest+b=∑i=1nαiyi⟨xi,xtest⟩+b
我们发现,除了支持向量以外的αi都是等于0的,xtest只需要与支持向量做内积即可