SVM——硬间隔最大化

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

数据集 D={(x(1),y(1)),(x(2),y(2)),,(x(m),y(m))} D = { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , ⋯ , ( x ( m ) , y ( m ) ) } x(i)Rn x ( i ) ∈ R n y(i){1,1} y ( i ) ∈ { − 1 , 1 }

超平面 wTx+b=0 w T x + b = 0 wRn w ∈ R n bR b ∈ R

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

【立体几何知识】

(x0,y0,z0) ( x 0 , y 0 , z 0 ) 到平面 Ax+By+Cz+D=0 A x + B y + C z + D = 0 的距离为

d=|Ax0+By0+Cz0+D|A2+B2+C2 d = | A x 0 + B y 0 + C z 0 + D | A 2 + B 2 + C 2

【几何间隔】

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

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

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

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

SVM——硬间隔最大化_第1张图片

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

于是 OB=OABA O B → = O A → − B A → ,即向量 OB O B → 的坐标(也是点 B B 的坐标)为 xidiww x i − d i ⋅ w ‖ w ‖

由于点 B B 在超平面上,代入超平面方程,得 w(xidiww)+b=0 w ( x i − d i ⋅ w ‖ w ‖ ) + b = 0

解得 di=wxi+bw d i = w x i + b ‖ w ‖

【函数间隔】

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

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

函数间隔与几何间隔的关系为 di=γiw d i = γ i ‖ w ‖

【间隔最大化】

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

maxw,b dDs.t. yi(wxi+b)wdD max w , b   d D s.t.   y i ( w x i + b ) ‖ w ‖ ⩾ d D

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

maxw,b γDws.t. yi(wxi+b)wγDw max w , b   γ D ‖ w ‖ s.t.   y i ( w x i + b ) ‖ w ‖ ⩾ γ D ‖ w ‖

化简 s.t. s.t. 部分,得

maxw,b γDws.t. yi(wxi+b)γD max w , b   γ D ‖ w ‖ s.t.   y i ( w x i + b ) ⩾ γ D

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

γD=1 γ D = 1 时,得到一组最优解 w1 w 1 ∗ b1 b 1 ∗ ,当 γD=2 γ D = 2 时,得到一组最优解 w2 w 2 ∗ b2 b 2 ∗

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

maxw,b 1ws.t. yi(wxi+b)1 max w , b   1 ‖ w ‖ s . t .   y i ( w x i + b ) ⩾ 1

因为 maxw,b 1wminw,b wminw,b w2minw,b 12w2 max w , b   1 ‖ w ‖ ⇔ min w , b   ‖ w ‖ ⇔ min w , b   ‖ w ‖ 2 ⇔ min w , b   1 2 ‖ w ‖ 2

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

minw,b 12w2s.t. yi(wxi+b)1 min w , b   1 2 ‖ w ‖ 2 s.t.   y i ( w x i + b ) ⩾ 1

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

minw,b 12w2 min w , b   1 2 ‖ w ‖ 2

s.t. 1yi(wxi+b)0 s.t.   1 − y i ( w x i + b ) ⩽ 0

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

对于SVM,原始问题和对偶问题是等价的( d=p d ∗ = p ∗ ),所以求得了对偶问题的最优解 d d ∗ ,就相当于得到了原始问题的最优解 p 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 L ( w , b , α ) = 1 2 ‖ w ‖ 2 + ∑ i = 1 n α i [ 1 − y i ( w x i + b ) ] = 1 2 ‖ w ‖ 2 − ∑ i = 1 n α i y i ( w x i + b ) + ∑ i = 1 n α i = 1 2 ‖ w ‖ 2 − ∑ i = 1 n α i y i x i w − ∑ i = 1 n α i y i b + ∑ i = 1 n α i = 1 2 ‖ w ‖ 2 − w ∑ i = 1 n α i y i x i − b ∑ i = 1 n α i y i + ∑ i = 1 n α i

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

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

wL(w,b,α)=wi=1nαiyixi=0 ∇ w L ( w , b , α ) = w − ∑ i = 1 n α i y i x i = 0

bL(w,b,α)=i=1nαiyi=0 ∇ b L ( w , b , α ) = − ∑ i = 1 n α i y i = 0

w=i=1nαiyixi w = ∑ i = 1 n α i y i x i

i=1nαiyi=0 ∑ i = 1 n α i y i = 0

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

但不管怎样,将上述2个式子代入 L(w,b,α) L ( w , b , α ) 中,总可以消去变量 w w b b
(注意:在第2项中,当代入 w=i=1nαiyixi w = ∑ i = 1 n α i y i x i 时,因为 L(w,b,α) L ( w , b , α ) 中使用过了下标 i i ,因此需要把下标 i i 换为 j 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 min w , b L ( w , b , α ) = 1 2 ‖ w ‖ 2 − w ∑ i = 1 n α i y i x i − b ∑ i = 1 n α i y i + ∑ i = 1 n α i = 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j x i x j − ( ∑ j = 1 n α j y j x j ) ( ∑ i = 1 n α i y i x i ) − b ⋅ 0 + ∑ i = 1 n α i = 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j x i x j − ∑ i = 1 n ∑ j = 1 n α i α j y i y j x i x j + ∑ i = 1 n α i = − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j x i x j + ∑ i = 1 n α i

minw,bL(w,b,α)=12i=1nj=1nαiαjyiyjxixj+i=1nαi min w , b L ( w , b , α ) = − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j x i x j + ∑ i = 1 n α i (仅包含变量 α α

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

maxα 12i=1nj=1nαiαjyiyjxixj+i=1nαi max α   − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j x i x j + ∑ i = 1 n α i

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

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

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

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

【KKT条件】

原问题的约束
 1yi(wxi+b)0i=1,2,,n   1 − y i ( w x i + b ) ⩽ 0 i = 1 , 2 , ⋯ , n

梯度等于0
 wL(w,b,α)=0w=i=1nαiyixi   ∇ w L ( w , b , α ) = 0 ⇒ w = ∑ i = 1 n α i y i x i
 bL(w,b,α)=0i=1nαiyi=0   ∇ b L ( w , b , α ) = 0 ⇒ ∑ i = 1 n α i y i = 0

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

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

【求解对偶问题】

maxα 12i=1nj=1nαiαjyiyjxixj+i=1nαi max α   − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j x i x j + ∑ i = 1 n α i
s.t. i=1nαiyi=0 s.t.   ∑ i = 1 n α i y i = 0
αi0 α i ⩾ 0

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

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

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

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

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

yj(wxj+b)1yj(wxj+b)y2jwxj+byjbbb=0=0使y2j1=0=yjxjw=yjxji=1nαiyixiw=i=1nαiyixi=yji=1nαiyixixj y j ( w ∗ x j + b ∗ ) − 1 = 0 y j ( w ∗ x j + b ∗ ) − y j 2 = 0 (使用 y j 2 替换1) w ∗ x j + b ∗ − y j = 0 b ∗ = y j − x j w ∗ b ∗ = y j − x j ∑ i = 1 n α i ∗ y i x i (代入 w ∗ = ∑ i = 1 n α i ∗ y i x i ) b ∗ = y j − ∑ i = 1 n α i ∗ y i x i x j

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

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

计算出 w w ∗ b b ∗ 之后,对于一个未知的样本 xtest x test ,我们需要计算 wTxtest+b w T x test + b

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

wTxtest+b=(i=1nαiyixi)Txtest+b=i=1nαiyixi,xtest+b w T x test + b = ( ∑ i = 1 n α i y i x i ) T x test + b = ∑ i = 1 n α i y i ⟨ x i , x test ⟩ + b

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

你可能感兴趣的:(经典机器学习)