SVM学习笔记-线性支撑向量机

0 - 写在前面

本系列为学习林轩田老师讲解的SVM的笔记整理,共四篇,此为第一篇:

如有理解错误,还望不吝指教!

1 - 最大间隔超平面

1.1 - 线性分类器回顾

如下图中有两个类别 × × ,当数据是线性可分的时候, PLA P L A 算法可以帮助我们找到能够正确划分数据的超平面 hyperplane h y p e r p l a n e ,即如图所示的那条线。


这里写图片描述

对于一个线性可分的资料,不会只存在一条线可以正确的划分 × × 。如下图中有三条线可以完美的划分两个类别, 但是哪一个是最好的划分呢?


这里写图片描述

  • 对于 PLA P L A 算法来说,最终得到哪一条线是不一定的,取决于算法 scan s c a n 数据的顺序。
  • VC bound V C   b o u n d 的角度来说,我们所在意的 Eout E o u t 会被 Ein E i n Ω(H) Ω ( H ) 控制住,其中的 Ein E i n 指的是分类器在看过的资料上的表现,显然上述的三条线的 Ein E i n 都是 0 0 Ω(H)是指复杂度, 因为都是线性的分类器,所以都等于 d+1 d + 1
    Eout(w)Ein0+Ω(H)dvc=d+1 E o u t ( w ) ≤ E i n ⏟ 0 + Ω ( H ) ⏟ d v c = d + 1

但是直观上来看,最右边的线应该会是比较好的 hyperplane h y p e r p l a n e 为什么最右边的分隔面最好呢?这里先给出一个简单直观的解释,因为最右边的线对于测量误差的容忍度是最好的。例如对于每张图片中左下角的样本点,当未来要判定与该点非常接近的点(有可能它们的 feature f e a t u r e 本来就是一样的,就是同样的一个样本,只不过因为测量的误差的存在,所以 feature f e a t u r e 变得有点不同了)的 label l a b e l 的时候,最右边的 hyperplane h y p e r p l a n e 对这些误差会有最大的容忍度。这也是其最大的不同于左边两条线的地方。

从下面的图可以更加直观的看出,我们想要找一个离每一个样本点都很远的分隔线。这样对测量误差有更大的容忍度,就能更加避免过拟合的情况出现。(tolerate more noise more robust to overfitting)或者说,我们想找这样的一个超平面,离这个超平面最近的点的到这个超平面的距离也是很大的。


这里写图片描述

或者从另一角度来看, 我们想要找的是“最胖”的那条线。有“多胖”是根据离该线最近的点距离它有多远来定义的。


这里写图片描述

1.2 - 最大间隔分类超平面

所以我们可以使用如下的稍微带点数学形式的表达方式来描述我们的需求:


maxwsubject to fatness(w)w classifies every (xn,yn) correctlyfatness(w)=minn=1,,N  distance(xn,w) m a x w   f a t n e s s ( w ) s u b j e c t   t o w   c l a s s i f i e s   e v e r y   ( x n , y n )   c o r r e c t l y f a t n e s s ( w ) = m i n n = 1 , ⋯ , N ⁡     d i s t a n c e ( x n , w )

即我们要找一条线 w w ,首先这条线要正确的划分每一个样本(w classifies every (xn,yn) correctly)。其次这条线要是所有能正确划分样本点的线中最”“的 (maxw fatness(w)) ( m a x w   f a t n e s s ( w ) ) 。线 w w 的”胖”的衡量方法是:到所有的点中距离最近的点的长度作为该w fatness f a t n e s s (胖瘦程度)。

一句话:找能正确划分数据的最胖的线。

在大多数的资料中,线的胖瘦 fatness f a t n e s s 被称为是 margin m a r g i n correctness c o r r e c t n e s s 其实就是要求 yy^=ynwTxn>0 y y ^ = y n w T x n > 0

所以上述的表达可以进一步数学化为:


maxwsubject to     margin(w)  every   ynwTxn>0margin(w)=minn=1,,N distance(xn,w) m a x w       m a r g i n ( w ) s u b j e c t   t o         e v e r y       y n w T x n > 0 m a r g i n ( w ) = m i n n = 1 , ⋯ , N ⁡   d i s t a n c e ( x n , w )

GOAL G O A L :找有最大间隔( margin m a r g i n )的分类超平面。

2 - 最大间隔问题

2.1 - 点到超平面的距离

上一小节给出了一个最优化问题,如果能够解决那个问题就可以得到最佳的线在哪里。我们把最终想要找到的那条线称为分隔超平面。该分隔超平面由 w,b w , b 决定, 接下来所有的工作都是在找最佳的 w,b w , b ,从而得到最终的模型: h(x)=sign(wTx+b) h ( x ) = s i g n ( w T x + b )

下面开始来一点一点的变换上面的问题直到我们可以求解。

首先我们关注 distance(xn,w) d i s t a n c e ( x n , w ) 。也就是分隔超平面和样本点之间的距离。怎么算一个点 x x 到平面wTx+b=0的距离呢? wTx+b=0 w T x + b = 0 就是我们最终想要的分隔超平面。


这里写图片描述

考虑在平面上的两个点 x,x′′ x ′ , x ″ , 那么有

wTx=b,   wTx′′=b w T x ′ = − b ,       w T x ″ = − b

两式相减:
wT(x′′x)vector on hyperplane=0 w T ( x ″ − x ′ ) ⏟ v e c t o r   o n   h y p e r p l a n e = 0

所以可以得到 w w 是该平面的法向量xxw)。

那么一个任意点 x x 到平面(w,b)的距离即是 xx x − x ′ w w 上投影的长度,其中x为平面上的任意一个点。根据公式可以计算如下(投影):

distance(x,b,w)=|wT||w||(xx)|=1||w|||wTx+b| d i s t a n c e ( x , b , w ) = | w T | | w | | ( x − x ′ ) | = 1 | | w | | | w T x + b |

其中, b,w b , w 代表平面。第二步化简用到 wTx=b w T x ′ = − b 。这样我们就会求解点到平面的距离了。

需要注意的是,由于是分隔超平面,针对每一个样本 (xn,yn) ( x n , y n ) ,都有 yn(wTxn+b)>0 y n ( w T x n + b ) > 0 ,利用这一点,样本点到分隔超平面的距离计算公式可以变为:

distance(xn,b,w)=1||w||yn(wTxn+b) d i s t a n c e ( x n , b , w ) = 1 | | w | | y n ( w T x n + b )

之所以可以这样做是因为我们只考虑那些能够正确分类的线。

即我们最初的目标变为:


maxw.bsubject to    margin(w,b)  every   yn(wTxn+b)>0margin(w,b)=minn=1,,N  1||w||yn(wTxn+b) m a x w . b       m a r g i n ( w , b ) s u b j e c t   t o       e v e r y       y n ( w T x n + b ) > 0 m a r g i n ( w , b ) = m i n n = 1 , ⋯ , N ⁡     1 | | w | | y n ( w T x n + b )

还是不会求解,所以需要进一步简化。我们最终想要找的是一个 hyperplane h y p e r p l a n e ,也就是 wTx+b=0 w T x + b = 0 (我们现在在选择它的系数 w w b)。情况是这样的: wTx+b=0 w T x + b = 0 3wTx+3b=0 3 w T x + 3 b = 0 是没有什么差别的,只是进行了系数的放缩,其实是一个超平面,在二维就表示同一条直线。既然这些系数的放缩是不会影响结果的, 那么我们可不可以考虑一些比较特别的放缩使得问题变的简单一点呢? 出于这样的考虑,在这里我们使用一个特别的放缩使得

minn=1,,N  yn(wTxn+b)=1 m i n n = 1 , ⋯ , N ⁡     y n ( w T x n + b ) = 1

通过调节 w,b w , b ,这样的放缩总是可以做到的。这样做的目的是为了使得
margin(w,b)=1||w|| m a r g i n ( w , b ) = 1 | | w | |

原来的问题变为:


maxw.bsubject to    1||w||  every   yn(wTxn+b)>0minn=1,,N  yn(wTxn+b)=1 m a x w . b       1 | | w | | s u b j e c t   t o       e v e r y       y n ( w T x n + b ) > 0 m i n n = 1 , ⋯ , N ⁡     y n ( w T x n + b ) = 1

分析一下这个问题相较于上一次来说有什么变化:我们不再需要计算 margin m a r g i n 了, margin m a r g i n 就等于 1||w|| 1 | | w | | , 但是为了保证 margin=1||w|| m a r g i n = 1 | | w | | ,我们又多了一个条件, 就是要把 w w 缩放成恰好满足minn=1,,Nyn(wTxn+b)=1, 直观上可以理解为得分最少的样本的分数 (wTxn+b) ( w T x n + b ) 与其 label l a b e l 的乘积为 1 1
进一步可以变为:


maxw.b   1||w||s.t.    minn=1,,N  yn(wTxn+b)=1

因为条件 minn=1,,N  yn(wTxn+b)=1 m i n n = 1 , ⋯ , N     y n ( w T x n + b ) = 1 包括 every   yn(wTxn+b)>0 e v e r y       y n ( w T x n + b ) > 0 ,并且比其更为严格, 所以后者可以去掉。

我们进一步得到了看起来描述比较简单的间隔最大化问题的需求:最大化 1||w|| 1 | | w | | ,并且满足最小的 yn y n 乘以分数的值为1。

maxw.bs.t.   1||w||    minn=1,,N  yn(wTxn+b)=1 m a x w . b       1 | | w | | s . t .         m i n n = 1 , ⋯ , N     y n ( w T x n + b ) = 1

虽然经过了很多的变换,使用了很多技巧,但是这个问题还是不会解。(接下来的变换的主要思想是,因为在上述最优化的问题的条件中有个 min m i n 的操作,我们希望把这个 min m i n 去掉,把条件放宽,然后在一个比较宽松的条件下求解原来的最优化问题,这样可能简单点,当然我们要保证在这个宽松的条件下求得的解依然满足原来比较严格的条件,不然是不可以这样做的。)
现在的目标是要把条件中的 min m i n 操作去掉。我们将条件 minn=1,,N  yn(wTxn+b)=1 m i n n = 1 , ⋯ , N ⁡     y n ( w T x n + b ) = 1 放宽至: for all n f o r   a l l   n 都有 yn(wTxn+b)1 y n ( w T x n + b ) ≥ 1 现在我们担心的问题是:原来的最优化问题的条件要求最小的 yn(wTxn+b) y n ( w T x n + b ) 等于 1 1 , 而现在要求所有的yn(wTxn+b)大于等于 1 1 。那么在新的条件下求解原来的问题得到的最佳解w会不会使得所有的 yn(wTxn+b) y n ( w T x n + b ) 都大于 1 1 了,这样我们放宽条件就出了问题,因为求得的解不在满足原来的条件了。
以下将证明,即使放宽了条件,最佳解依然满足原来的条件minn=1,,N  yn(wTxn+b)=1

反证法:

如果最佳解是 (w,b) ( w , b ) 并且该解使得所有的 yn(wTxn+b) y n ( w T x n + b ) 都是大于1的, 例如 yn(wTxn+b)1.126 y n ( w T x n + b ) ≥ 1.126 , 那么我们进行一下缩放可知 (w1.126,b1.126) ( w 1.126 , b 1.126 ) 也是放松后问题的解。但是此时 w1.126 w 1.126 显然比 w w 会有更大的1||w||,与假设 (w,b) ( w , b ) 是最佳解矛盾,也就是说不可能有最佳解使得所有的 yn(wTxn+b) y n ( w T x n + b ) 都是大于1的。

新的问题变成:

maxw.bs.t.   1||w||      yn(wTxn+b)1 for all n m a x w . b       1 | | w | | s . t .             y n ( w T x n + b ) ≥ 1   f o r   a l l   n

变为最小化问题:

minw.bs.t.   12wTw      yn(wTxn+b)1 for all n m i n w . b       1 2 w T w s . t .             y n ( w T x n + b ) ≥ 1   f o r   a l l   n

这就是我们最终想要解决的问题,当我们能找到这个问题中的 w w b的时候,我们就可以说 wTx+b=0 w T x + b = 0 就是我们要找的最胖的分隔边界。

3 - 支撑向量机

通过上一节的推导我们得到的问题称为标准问题,这个标准问题要最小化 w w 和自己的內积, 需要满足的条件是对于每一个样本yn和得分 wTxn+b w T x n + b 的乘积要大于等于 1 1

minw.b   12wTws.t.      yn(wTxn+b)1 for all n

首先给出一个可以手工计算的例子来看看这个问题的求解过程。所有的样本点如下图所示:共有 4 4 个样本,2个正例, 2 2 个负例。


这里写图片描述

每一个样本的具体信息如下:

(8)X=[00222030],Y=[11+1+1]

根据最优化问题的要求最佳的 w w 需要满足以下4个条件:

b1(i)2w12w2b1(ii)2w1+b1(iii)3w1+b1(iv)

  • (i) and (iii)w1+1 ( i )   a n d   ( i i i ) ⟹ w 1 ≥ + 1
  • (ii) and (iii)w21 ( i i )   a n d   ( i i i ) ⟹ w 2 ≤ − 1

根据以上的两个式子可以得到:
12wTw1 1 2 w T w ≥ 1 , 所以我们的目标函数,最小最小的时候也是 1 1 。我们可以令w1=1,w2=1,b=1。这样的话不仅仅满足了条件 (i)(iv) ( i ) ∽ ( i v ) ,也使得 target function t a r g e t   f u n c t i o n 取得了最小的值 1 1 。其中b的值可以通过计算一个范围得到。这样我们就得到了我们最想要的 hyperplane h y p e r p l a n e gsvm:x1x2b=1 g s v m : x 1 − x 2 − b = 1 。从图中可以看出来这条线是比较胖的。这就是我们想要找的支撑向量机。此时 margin=1||w||=12 m a r g i n = 1 | | w | | = 1 2


这里写图片描述

为什么要叫支撑向量机呢?在我们找到了这条最胖的线之后我们发现有一些点离这条线是很近的。 也就是如图用方框框起来的那些点。其实只要这些点就可以确定我们想要的 hyperplane h y p e r p l a n e ,我们把这些点叫做 Support Vector S u p p o r t   V e c t o r 。可以理解为这些支撑向量就可以确定我们想要的分割超平面,而不需要其他的点。

3.1 - SVM的一般解法

minw.bs.t.   12wTw      yn(wTxn+b)1 for all n m i n w . b       1 2 w T w s . t .             y n ( w T x n + b ) ≥ 1   f o r   a l l   n

通过分析可知,我们想要最小化的问题是个 w w 的二次函数,该问题的条件是w的线性一次式。我们把这样的问题叫做二次规划(Quadratic programming)所以我们的一个解法是将我们的问题表示为二次规划的标准形式,然后就可以调用二次规划的包进行运算。

3.2 - 标准的二次规划问题

optimaluminusubject toQP(Q,p,A,c)12uTQu+pTuaTmucmfor m=1,2,,M o p t i m a l u ⟵ Q P ( Q , p , A , c ) m i n u 1 2 u T Q u + p T u s u b j e c t   t o a m T u ≥ c m f o r   m = 1 , 2 , ⋯ , M

所以我们只要确定其中的系数 Q,p,A,c Q , p , A , c ,这样就可以求解出最佳的分割线。

u=[bw];Q=[00d0TdId];p=0d+1aTN=yn[1xTn];cn=1;M=N(4) (4) u = [ b w ] ; Q = [ 0 0 d T 0 d I d ] ; p = 0 d + 1 a N T = y n [ 1 x n T ] ; c n = 1 ; M = N

这样就将我们想要求解的最佳化问题变为二次规划问题。

3.3 - 使用二次规划的方法求解 SVM S V M

线性可分的硬间隔 SVM S V M 算法
Linear Hard-Margin SVM Algorithm

  1. 表示为规范的 QP Q P 问题,给出其中的参数 Q,p,A,c Q , p , A , c
  2. w,bQP(Q,p,A,c) w , b ⟵ Q P ( Q , p , A , c )
  3. return  w,b  as  gsvm r e t u r n     w , b     a s     g s v m

note n o t e :

  1. hard h a r d - margin m a r g i n :表明我们坚持要将正例和负例完全的分开,不允许有误分的点。
  2. linear l i n e a r :表明我们是在使用 x x 来训练SVM,我们得到的是在 X X 空间中的分割超平面。而没有经过任何的特转换。
  3. 所以如果我们想要一个非线性的hyperplane,可以使用 z=Φ(x) z = Φ ( x )

到了现在我们已经知道怎么来求解这个 SVM S V M 的问题了,如果你想要做非线性的,那么只要把 x x 变为z就好了。

minw.bs.t.   12wTw      yn(wTzn+b)1 for all n m i n w . b       1 2 w T w s . t .             y n ( w T z n + b ) ≥ 1   f o r   a l l   n

那么,为什么 SVM S V M 这样的模型会有比较好的效果呢?在之前简单的说过,一条胖的线可以抵挡比较多测量误差
在这里我们把 SVM S V M 和我们之前提到的一个工具 regularization r e g u l a r i z a t i o n 做简单的对比。在我们做 learning l e a r n i n g 的时候, 我们想要把 Ein E i n 最小化,又担心在最小化 Ein E i n 的时候会出现 overfitting o v e r f i t t i n g 的状况,所以我们就加了一个限制 w w 长度的项:wTwC;我们发现在 SVM S V M 中同样也做了这两件事情,不过这两件事的位置对调了:在 SVM S V M 中,我们最小化的不是 Ein E i n 而是 w w 的长度wTw,加的限制条件变成了要将 Ein E i n 做成 0 0 。所以从这个层面上来看, SVM本身做到了和 regularization r e g u l a r i z a t i o n 相同的事情。


这里写图片描述

4 - 总结

我们的出发点是想要找一些比较“胖”的分割线来应付测量误差,然后通过一系列的简化得到了SVM的描述如下:

minw.bs.t.   12wTw      yn(wTzn+b)1 for all n m i n w . b       1 2 w T w s . t .             y n ( w T z n + b ) ≥ 1   f o r   a l l   n

并将目标变为可以使用二次规划进行求解的一个问题。接下来我们会看看在配合上非线性转换之后的SVM应该怎么求解。

添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值