本文参考自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 , w∈Rn w ∈ R n , b∈R 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)+b∣∣∥w∥ γ ( 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上关于几何间隔的证明】

如图所示, w∥w∥ 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 → 的坐标为 di⋅w∥w∥ d i ⋅ w ‖ w ‖
于是 OB−→−=OA−→−−BA−→− O B → = O A → − B A → ,即向量 OB−→− O B → 的坐标(也是点 B B 的坐标)为 xi−di⋅w∥w∥ x i − d i ⋅ w ‖ w ‖
由于点 B B 在超平面上,代入超平面方程,得 w(xi−di⋅w∥w∥)+b=0 w ( x i − d i ⋅ w ‖ w ‖ ) + b = 0
解得 di=wxi+b∥w∥ 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=γi∥w∥ d i = γ i ‖ w ‖
【间隔最大化】
SVM的目标是寻找一个几何间隔最大的超平面,最优化问题表达如下:
maxw,b dDs.t. yi(wxi+b)∥w∥⩾dD max w , b d D s.t. y i ( w x i + b ) ‖ w ‖ ⩾ d D
代入 dD=γD∥w∥ d D = γ D ‖ w ‖ ,将几何间隔替换为函数间隔
maxw,b γD∥w∥s.t. yi(wxi+b)∥w∥⩾γD∥w∥ max w , b γ D ‖ w ‖ s.t. y i ( w x i + b ) ‖ w ‖ ⩾ γ D ‖ w ‖
化简 s.t. s.t. 部分,得
maxw,b γD∥w∥s.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 时,得到一组最优解 w∗1 w 1 ∗ , b∗1 b 1 ∗ ,当 γD=2 γ D = 2 时,得到一组最优解 w∗2 w 2 ∗ , b∗2 b 2 ∗
这两组最优解的关系为: w∗2=2w∗1 w 2 ∗ = 2 w 1 ∗ , b∗2=2b∗1 b 2 ∗ = 2 b 1 ∗ ,是成比例的,所以将 γD γ D 取一个特殊值即可,此处取 γD=1 γ D = 1 ,于是得到
maxw,b 1∥w∥s.t. yi(wxi+b)⩾1 max w , b 1 ‖ w ‖ s . t . y i ( w x i + b ) ⩾ 1
因为 maxw,b 1∥w∥⇔minw,b ∥w∥⇔minw,b ∥w∥2⇔minw,b 12∥w∥2 max w , b 1 ‖ w ‖ ⇔ min w , b ‖ w ‖ ⇔ min w , b ‖ w ‖ 2 ⇔ min w , b 1 2 ‖ w ‖ 2
所以得到最终的线性可分SVM的最优化问题为:
minw,b 12∥w∥2s.t. yi(wxi+b)⩾1 min w , b 1 2 ‖ w ‖ 2 s.t. y i ( w x i + b ) ⩾ 1
我们已经得到了SVM的原始问题
minw,b 12∥w∥2 min w , b 1 2 ‖ w ‖ 2
s.t. 1−yi(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,α)=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 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⩾0minw,bL(w,b,α) max α : α i ⩾ 0 min w , b L ( w , b , α )
(记住对偶问题是先挑“矮个儿”再挑“高个儿”,先处理原变量,再处理对偶变量)
第一步,求 minw,bL(w,b,α) min w , b L ( w , b , α ) ,其中 w,b w , b 为变量, α α 为常量同时消去变量 w,b w , b
令 ∇wL(w,b,α)=w−∑i=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,α)=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 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,α)=−12∑i=1n∑j=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α:αi⩾0minw,bL(w,b,α) max α : α i ⩾ 0 min w , b L ( w , b , α ) ,即得到如下的对偶问题
maxα −12∑i=1n∑j=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 (在第一步中得到的约束条件,照抄过来)
αi⩾0 α i ⩾ 0
因为对于原始问题, 12∥w∥2 1 2 ‖ w ‖ 2 和 1−yi(wxi+b) 1 − y i ( w x i + b ) 均为凸函数,没有等式约束,并且存在 (w,b) ( w , b ) 使得所有不等式约束 1−yi(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条件】
原问题的约束
① 1−yi(wxi+b)⩽0i=1,2,⋯,n 1 − y i ( w x i + b ) ⩽ 0 i = 1 , 2 , ⋯ , n
梯度等于0
② ∇wL(w,b,α)=0⇒w=∑i=1nαiyixi ∇ w L ( w , b , α ) = 0 ⇒ w = ∑ i = 1 n α i y i x i
③ ∇bL(w,b,α)=0⇒∑i=1nαiyi=0 ∇ b L ( w , b , α ) = 0 ⇒ ∑ i = 1 n α i y i = 0
不等式约束的拉格朗日乘子大于等于0
④ αi⩾0i=1,2,⋯,n α i ⩾ 0 i = 1 , 2 , ⋯ , n
对偶互补条件
⑤ αi[1−yi(wxi+b)]=0i=1,2,⋯,n α i [ 1 − y i ( w x i + b ) ] = 0 i = 1 , 2 , ⋯ , n
【求解对偶问题】
maxα −12∑i=1n∑j=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
αi⩾0 α 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[1−yi(w∗xi+b∗)]=0 α i ∗ [ 1 − y i ( w ∗ x i + b ∗ ) ] = 0 成立
对于 α∗ α ∗ 中的一个满足 α∗j>0 α j ∗ > 0 的分量 α∗j α j ∗ ,有 α∗j[1−yj(w∗xj+b∗)]=0⇒1−yj(w∗xj+b∗)=0 α j ∗ [ 1 − y j ( w ∗ x j + b ∗ ) ] = 0 ⇒ 1 − y j ( w ∗ x j + 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 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∗=yj−∑i=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αiyi⟨xi,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 只需要与支持向量做内积即可