SVM基本数学原理

SVM理解的视频和文章其实看过好几遍,每次都能看懂,但是过了一个月细节就模糊了,想到如果要掌握一个知识,最好的方式用自己的语言陈述一遍。1. Loss FunctionSVM与其他分类算法最大的不同在于loss function,也就是找到一个margin最大的分割线: argmaxw,b argminx∥wTx+b∥wTw−−−−√arg⁡maxw,b⁡ arg...
摘要由CSDN通过智能技术生成

SVM理解的视频和文章其实看过好几遍,每次都能看懂,但是过了一个月细节就模糊了,想到如果要掌握一个知识,最好的方式用自己的语言陈述一遍。

1. Loss Function

SVM与其他分类算法最大的不同在于loss function,也就是找到一个margin最大的分割线:

argmaxw,b argminxwTx+bwTw arg ⁡ max w , b ⁡   arg ⁡ min x ⁡ ‖ w T x + b ‖ w T w

假设存在直线 wTx+b w T x + b ,能够分割 { (x1,y1),(x2,y2),...,(xn,yn)} { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) } 全部 n n 个点,这样的线其实有很多,所以我们想要到一条线使得正负样本之间的间隔越远越好,也就是分的越清楚越好(这里其实与优化auc有异曲同工之妙,其实SVM的loss函数就是hinge loss,后面会论述hinge loss与优化auc有什么具体的联系)。这个时候我们就需要调整 w b b 的值,使得所有点到这条线距离中最短的两个点的距离最大。有点绕口,其实想表达的意思就是上述loss函数中 x , y 是所有点中距离这条线最近的点,这个点一般都是2个或2个以上(一个正样本,一个负样本)。
这里 yi(+11) y i ∈ ( + 1 , − 1 ) ,其实这也是与其他二分类问题 yi(0,1) y i ∈ ( 0 , 1 ) 不同的地方。如何设置 yi y i 的值与loss函数有密不可分的关系,本质上就是让loss函数写起来毫无违和感,例如这里设计成 { +1,1} { + 1 , − 1 } 就是为了能够把loss函数分子的取模修改为 y(wTx+b) y ( w T x + b ) ,让表达位于直线上面和下面的点到直线距离变成了一个数学公式。
argmaxw,b ymin(wTxmin+b)wTw arg ⁡ max w , b ⁡   y m i n ( w T x m i n + b ) w T w

当然仅仅是这样一个loss函数是无法表达直线 wTx+b w T x + b 能够区分所有正样本和负样本的,所以需要加上一些附加的条件:
s.t.  yi(wTxi+b)ymin(wTxmin+b) s . t .     y i ( w T x i + b ) ≥ y m i n ( w T x m i n + b )

假设一共有 n n 个点,那么上面的条件就有 n 个,这里的 (xmin,ymin) ( x m i n , y m i n ) 指的就是到直线最短点的距离。我们都知道如果将一条直线 w w b 都已经确定了,对他们同时乘以一个倍数变为 βw β w βb β b ,表达的还是同一条直线。假设我们让这个 β β 取某一个值正好让 ymin(wTxmin+b) y m i n ( w T x m i n + b ) 变成1,那么上面的 Loss函数约束条件都可以得到简化:
argmaxŵ ,b̂  1ŵ Tŵ  arg ⁡ max w ^ , b ^ ⁡   1 w ^ T w ^

s.t.yi(ŵ Txi+b̂ )1 s . t . y i ( w ^ T x i + b ^ ) ≥ 1

这里的 ŵ  w ^ b̂  b ^ 已经不是原来的值了,而是 βw β w βb β b ,为了后面偷懒不写 ŵ  w ^ b̂  b ^ ,这里只是做了一个简单的替换而已,不影响最优化的结果。
argmaxw,b 1wTw arg ⁡ max w , b ⁡   1 w T w

s.t.yi(wTxi+b)1 s . t . y i ( w T x i + b ) ≥ 1

把上述的最大化问题变成最小化问题,把 wTw w T w 变为 12wTw 1 2 w T w 优化问题不变,这其实就是数学上的一种方便,没什么好说的:
argminw,b 12wTw arg ⁡ min w , b ⁡   1 2 w T w

s.t.1yi(wTxi+b)0 s . t . 1 − y i ( w T x i + b ) ≤ 0

2. KKT条件

本质上SVM的求解问题问题就是带条件的二次规划问题,而求解带等式条件的最优化问题通常我们会引入拉格朗日乘子,而对于带不等式的最优化问题就需要祭出KKT条件了,你可以把KKT条件看做拉格朗日乘子的一种推广形式。那么我们该如何理解KKT条件呢?如果一上来就列出一堆公式这个问题也就讲完了,只不过不懂的依然不懂,过一段时间就被彻底的遗忘。所以这一次希望能够从解决问题的角度来理解一下KKT条件,其中借鉴了很多林轩田老师的课程内容。

2.1 拉格朗日方程

在求解二次规划问题时如果掺杂着一堆限制条件,这个最优化问题就会变得不太好解决,优化程序也不容易写出来。那么有没有什么办法把上面的问题中限制条件去掉呢?答案其实呼之欲出-拉格朗日乘子,其实拉格朗日乘子解决的问题是当条件是等式的情况下,目标函数的极值点出现在可行空间与条件函数相切的地方。那么对于有不等式条件的问题,我们是否可以直接使用拉格朗日乘子的方法呢?例如可以把原来的最优化问题变成:

argminw,b,α0 12wTw+i=1nαi(1yi(wTxi+b))(1) (1) arg ⁡ min w , b , α ≥ 0 ⁡   1 2 w T w + ∑ i = 1 n α i ( 1 − y i ( w T x i + b ) )

显然这么做是不可以的,上面的最优化公式没有把不等式约束条件带进来,违反不等式的 w w ∗ b b ∗ α α ∗ 也可以是最优化的解。这里可以思考一下为什么等式条件可以用上述公式 (1) ( 1 ) 进行求解?其实也很简单,如果是等式条件,那么最优解一定出现在这个条件函数与可行空间相切的地方,这个可以用简单的反证法进行证明。如果对公式 (1) ( 1 ) 进行求导,我们可以得到两个函数的梯度是正比关系,这就隐含了极值在两个函数相切的地方。反观不等式条件,极值就不一定出现在函数相切的地方了。那么这个函数:
L(w,b,α)=12wTw+i=1nαi(1yi(wTxi+b))(2) (2) L ( w , b , α ) = 1 2 w T w + ∑ i = 1 n α i ( 1 − y i ( w T x i + b ) )

是不是就毫无用处了呢?聪明的数学家发现如果我们在这个函数前加上一个 argmaxα arg ⁡ max α 问题好像就解决了,也就是把公式 (2) ( 2 ) 变成了:
L(w,b,α)=argmaxα 12wTw+i=1nαi(1yi(wTxi+b))(3) (3) L ( w , b , α ) = arg ⁡ max α ⁡   1 2 w T w + ∑ i = 1 n α i ( 1 − y i ( w T x i + b ) )

试想一下如果 w w ∗ b b ∗ 是一组极值点,如果不满足约束条件,意味着 1yi(wTxi+b)>0 1 − y i ( w ∗ T x i + b ∗ ) > 0 ,那么这个取极大值就会把 αi α i 调成 ,那么 L(w,b,α) L ( w , b , α ) 也会趋近于 ,那么原始问题 argminw,bL(w,b,α) arg ⁡ min w , b ⁡ L ( w , b , α ) 的结果也会趋近于 。如果你是最优化的程序,一旦发现这样的不满足不等式条件 w w b ,你就会抛弃这样的极值点,这样是不是一下子把不等式条件给囊括进来了。不得不说这样构造函数确实很巧妙,所以原来的最优化问题变成了:
argminw,b argmaxα012wTw+i=1nαi(1yi(wTxi+b))(4) (4) arg ⁡ min w , b ⁡   arg ⁡ max α ≥ 0 ⁡ 1 2 w
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值