SVM——硬间隔最大化

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

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

超平面 w T x + b = 0 w R n b R

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

【立体几何知识】

( x 0 , y 0 , z 0 ) 到平面 A x + B y + C z + D = 0 的距离为

d = | A x 0 + B y 0 + C z 0 + D | A 2 + B 2 + C 2

【几何间隔】

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

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

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

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

这里写图片描述

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

于是 O B = O A B A ,即向量 O B 的坐标(也是点 B 的坐标)为 x i d i w w

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

解得 d i = w x i + b w

【函数间隔】

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

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

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

【间隔最大化】

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

max w , b   d D s.t.   y i ( w x i + b ) w d D

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

max w , b   γ D w s.t.   y i ( w x i + b ) w γ D w

化简 s.t. 部分,得

max w , b   γ D w s.t.   y i ( w x i + b ) γ D

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

γ D = 1 时,得到一组最优解 w 1 b 1 ,当 γ D = 2 时,得到一组最优解 w 2 b 2

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

max w , b   1 w s . t .   y i ( w x i + b ) 1

因为 max w , b   1 w min w , b   w min w , b   w 2 min w , b   1 2 w 2

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

min w , b   1 2 w 2 s.t.   y i ( w x i + b ) 1

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

min w , b   1 2 w 2

s.t.   1 y i ( w x i + b ) 0

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

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

【SVM的对偶问题】

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

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 α : α i 0 min w , b L ( w , b , α )
(记住对偶问题是先挑“矮个儿”再挑“高个儿”,先处理原变量,再处理对偶变量)

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

w L ( w , b , α ) = w i = 1 n α i y i x i = 0

b L ( w , b , α ) = i = 1 n α i y i = 0

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

i = 1 n α i y i = 0

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

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

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

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 α : α i 0 min w , b L ( w , b , α ) ,即得到如下的对偶问题

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 = 1 n α i y i = 0 (在第一步中得到的约束条件,照抄过来)
α i 0

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

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

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

【KKT条件】

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

梯度等于0
  w L ( w , b , α ) = 0 w = i = 1 n α i y i x i
  b L ( w , b , α ) = 0 i = 1 n α i y i = 0

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

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

【求解对偶问题】

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 = 1 n α i y i = 0
α i 0

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

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

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

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

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

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 b 的公式为
w = i = 1 n α i y i x i
b = y j i = 1 n α i y i x i x j (样本 ( x j , y j ) 对应的 α j > 0

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

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

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

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 都是等于 0 的, x test 只需要与支持向量做内积即可

猜你喜欢

转载自blog.csdn.net/o0Helloworld0o/article/details/81502209