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


    最大间隔超平面

    线性分类器回顾

    当数据是线性可分的时候,PLA算法可以帮助我们找到能够正确划分数据的超平面hyperplane,如图所示的那条线。

    这里写图片描述

    哪一条线是最好的?

    这里写图片描述

    • 对于PLA算法来说,最终得到哪一条线是不一定的,取决于算法scan数据的过程。
    • 从VC bound的角度来说,上述三条线的复杂度是一样的 
      Eout(w)Ein����0+Ω(H)������dvc=d+1

    直观来看,最右边的线是比较好的hyperplane。

    为什么最右边的分隔面最好?

    对于测量误差的容忍度是最好的。例如对于每张图片中左下角的样本点,当未来要判定与该点非常接近的点(有可能它们的feature本来就是一样的,只不过因为测量的误差的存在,所以feature变得有点不同了)的label的时候,最右边的hyperplane对这些误差会有最大的容忍度。

    tolerate more noise  more robust to overfitting 
    当对测量误差有更大的容忍度的时候,就能更加避免过拟合的情况出现。 
    所以我们想要找的超平面就是能够更大的容忍测量误差的超平面。直观上来说,就是找这样的一个超平面,离这个超平面最近的点的到这个超平面的距离也是很大的。

    这里写图片描述

    “胖”分割面

    如下图所以,我们想要找的是“最胖”的那条线。

    这里写图片描述

    最大间隔分类超平面

    maxwsubject to fatness(w)w classifies every (xn,yn) correctlyfatness(w)=minn1,,N distance(xn,w)

    即我们要找一条线w,首先这条线要正确的划分每一个实例(w classifies every (xn,yn) correctly)。其次这条线要是最”胖”的(maxw fatness(w))。线w的”胖”的衡量方法是:到所有的点中距离最近的点的长度作为该wfatness(胖瘦程度)。一句话:线

    • fatness: 正式的表达为margin
    • correctness: 要求yn=sign(wTxn)

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

    maxwsubject to     margin(w)  every   ynwTxn>0margin(w)=minn1,,N distance(xn,w)

    goal: 找最大间隔(margin)的分类超平面


    最大间隔问题

    点到超平面的距离

    上面提到了我们要找最“胖”的线,这里涉及到了一个距离的计算。那么怎么算一个点x到平面wTx+b=0的距离。

    这里写图片描述

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

    wTx=b,   wTx′′=b


    两式相减: 

    wT(x′′x)����������vector on hyperplane=0


    所以可以得到w是该平面的法向量。(x′′xw)。

    那么x到平面的距离公式如下(投影): 

    distance(x,b,w)=|wT||w||(xx)|=1||w|||wTx+b|


    其中,b,w代表平面。距离即是求xxw上投影的长度。第二步化简用到wTx=b

    到分隔超平面的距离

    上一节中推导了点到平面的距离计算方法, 

    distance(x,b,w)=1||w|||wTx+b|


    对于我们最终想要得到的分隔超平面,我们可以得到如下的结果: 

    yn(wTxn+b)>0


    那么任意一个点到分隔超平面的距离可以变为: 

    distance(xn,b,w)=1||w||yn(wTxn+b)


    即我们想要做的事情变为: 

    maxw.bsubject to    margin(w,b)  every   yn(wTxn+b)>0margin(w,b)=minn=1,,N  1||w||yn(wTxn+b)

    我们最终想要找的是一个hyperplane,也就是wTx+b=0(我们现在在选择它的系数wb)。情况是这样的: wTx+b=03wTx+3b=0是没有什么差别的,只是进行了系数的放缩,其实是一个超平面,在二维就表示一条直线。那么在这里我们考虑一个很特别的放缩使得: 

    minn=1,,N  yn(wTxn+b)=1


    这样的放缩总是可以做到的。这样的话: 

    margin(w,b)=1||w||


    原来的问题变为: 

    maxw.bsubject to    1||w||  every   yn(wTxn+b)>0minn=1,,N  yn(wTxn+b)=1

    进一步可以变为:

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


    条件minn=1,,N  yn(wTxn+b)=1包括every   yn(wTxn+b)>0, 所以后者可以去掉。

    最大间隔问题

    我们进一步得到了描述比较简单的间隔最大化问题的需求。 

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


    现在的目标是要把条件中的min操作去掉。我们将条件minn=1,,N  yn(wTxn+b)=1放宽至:for all n都有yn(wTxn+b)1。现在我们担心的问题是:原来的条件要求最小的yn(wTxn+b)等于1, 而现在要求所有的yn(wTxn+b)大于等于1。那么在新的条件下会不会正好存在这样的w使得所有的yn(wTxn+b)都大于1了,这样我们放宽条件就出了问题,因为求得的解不在满足原来的条件了。 
    以下将证明,即使放宽了条件,最佳解依然满足minn=1,,N  yn(wTxn+b)=1 
    反证法: 
    如果最佳解(w,b)使得所有的yn(wTxn+b)都是大于1的, 例如yn(wTxn+b)1.126, 那么我们进行一下缩放可知(w1.126,b1.126)也是放松后问题的解。但是此时w1.126显然比w会有更大的1||w||。 所以假设:最佳解(w,b)使得所有的yn(wTxn+b)都是大于1, 是错误的。板面的做法和配料

    现在问题的形式变为: 

    maxw.bs.t.   1||w||      yn(wTxn+b)1 for all n

    变为最小为问题: 

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

    支撑向量机

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

    一个特例

    这里写图片描述

    图中的样本点featurelabel信息如下: 

    X=⎡⎣⎢⎢⎢02230200⎤⎦⎥⎥⎥,Y=⎡⎣⎢⎢⎢11+1+1⎤⎦⎥⎥⎥

    根据最优化问题的要求我们需要满足一下4个条件: 

    2w12w22w13w1b1b1+b1+b1(i)(ii)(iii)(iv)
    • (i) and (iii)w1+1
    • (ii) and (iii)w21 
      根据以上的两个式子可以得到: 
      12wTw1 
      所以我们可以令w1=1,w2=1,b=1。这样的话不仅仅满足了条件(i)(iv),也使得target function取得了最小的值1。其中b的值可以通过计算一个范围得到。这样我们就得到了我们最想要的hyperplane:gsvm:x1x2b=1。这就是我们想要找的支撑向量机。 
      此时margin=1||w||=12√。 
      这里写图片描述

    我们可以看到有一些离hyperplane很近的点,也就是如图用方框框起来的那些点。这些点就可以确定我们想要的hyperplane,我们把这些点叫做Support Vector。可以理解为这些支撑向量就可以确定我们想要的分割超平面,而不需要其他的点。

    SVM的一般解法

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

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

    标准的二次规划问题

    optimaluminusubject toQP(Q,p,A,c)12uTQu+pTuaTmcmfor m=1,2,,M

    所以我们要确定其中的系数Q,p,A,c 

    u=[bw];Q=[00d0TdId];p=0d+1aTN=yn[1xTn];cn=1;M=N

    线性可分的硬间隔SVM算法

    使用二次规划解决SVM

    1. 表示为规范的QP问题,Q,p,A,c
    2. w,bQP(Q,p,A,c)
    3. return w,b as gsvm

    note:

      1. hard-margin:表明我们坚持要将正例和负例完全的分开。
      2. linear:表明我们是在使用x来训练SVM,我们得到的是在X空间中的分割超平面。而没有经过任何的特转换
      3. 所以如果我们想要一个非线性的hyperplane,可以使用z=Φ(x)
  • 相关阅读:
    Cookie和Session机制详解
    MySQL数据库MyISAM和InnoDB存储引擎的比较
    MySQL索引背后的数据结构及算法原理
    Qt Meta Object System-元对象系统
    Qt事件处理机制
    学习STL-介绍一下STL
    为什么你有10年经验,但成不了专家?
    关于union的那些事儿
    关于enum的那些事儿
    三子棋局-挑战你的逻辑思维
  • 原文地址:https://www.cnblogs.com/xxr1/p/7355173.html
Copyright © 2020-2023  润新知