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)=minn?1,?,N distance(xn,w)

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

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

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

maxwsubject to     margin(w)  every   ynwTxn>0margin(w)=minn?1,?,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′′?x′是该平面的任意向量,w和该平面的任意向量垂直)。

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

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

其中,b,w代表平面。距离即是求x?x′在w上投影的长度。第二步化简用到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(我们现在在选择它的系数w和b)。情况是这样的: wTx+b=0和3wTx+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

一个特例

图中的样本点feature和label信息如下:

X=?????02230200?????,Y=??????1?1+1+1?????

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

?2w1?2w22w13w1?b≥1?b≥1+b≥1+b≥1(i)(ii)(iii)(iv)

  • (i) and (iii)?w1≥+1
  • (ii) and (iii)?w2≤?1 
    根据以上的两个式子可以得到: 
    12wTw≥1 
    所以我们可以令w1=1,w2=?1,b=?1。这样的话不仅仅满足了条件(i)∽(iv),也使得target function取得了最小的值1。其中b的值可以通过计算一个范围得到。这样我们就得到了我们最想要的hyperplane:gsvm:x1?x2?b=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) 
所以我们的一个解法是将我们的问题表示为二次规划的标准形式,然后就可以调用二次规划的包进行运算。

标准的二次规划问题

optimalu?minusubject toQP(Q,p,A,c)12uTQu+pTuaTm≥cmfor 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,b?QP(Q,p,A,c)
  3. return w,b as gsvm

note:

    1. hard-margin:表明我们坚持要将正例和负例完全的分开。
    2. linear:表明我们是在使用x来训练SVM,我们得到的是在X空间中的分割超平面。而没有经过任何的特转换
    3. 所以如果我们想要一个非线性的hyperplane,可以使用z=Φ(x)
时间: 2024-12-12 05:25:04

SVM学习笔记-线性支撑向量机的相关文章

走过路过不要错过 包你一文看懂支撑向量机SVM

假设我们要判断一个人是否得癌症,比如下图:红色得癌症,蓝色不得. 看一下上图,要把红色的点和蓝色的点分开,可以画出无数条直线.上图里黄色的分割更好还是绿色的分割更好呢?直觉上一看,就是绿色的线更好.对吧. 为啥呢?考虑下图,新来了一个黑色点,明显靠蓝色点更近,如果用黄线分割,却把它划分到了红色点这个类别里. 现在细想一下为什么绿线比黄线分隔效果更好? 黄色线太贴近蓝色点 绿色线到红色点群和蓝色点群距离大致相等.恰好位于两个点群中间的位置 由此我们就引申出了SVM的理论基础:使得距离决策边界最近的

支撑向量机 SVM(一)

本文总结支撑向量机的基础知识,加入一点个人的直观理解.个人比较不太喜欢照搬书里的东西,而是喜欢自己推导然后时不时闭上研究回忆,想方设法用自己的方式简单理解. 1. 分类支撑向量机         1.1 可分SVM与间隔最大化:                   对于二分类SVM,一种直观的理解就是要寻找一条有宽度的带子来分开两类数据,而不是一条线.为何要这样呢? 如果仅仅是一条线的话,那么例如上图中,这条边界并不唯一,那么模型的鲁棒性成问题.但是如果是找一条边界带,那么可能可以找到一条宽度最

支撑向量机SVM-1.原理

支撑向量机的英文名叫: Support Vector Machine,是机器学习领域中的很重要的一种算法.它的思想背后有极强的统计理论的支撑,也是统计学上常用的一种方法.此算法在机器学习中既能解决分类问题,又能解决回归问题.且对真实的数据具有很好的泛化能力. 原理:考虑如下样本数据集,如何分辨此数据集? 之前的逻辑回归算法,确定决策边界的思路是定义了一个概率函数,根据这个概率函数进行建模,形成了损失函数,最小化损失函数来确定决策边界. 支撑向量机和逻辑回归不同,它的实现是找到一条最优的决策边界,

数据结构学习笔记——线性表的应用

数据结构学习笔记——线性表的应用 线性表的应用 线性表的自然连接 计算任意两个表的简单自然连接过程讨论线性表的应用.假设有两个表A和B,分别是m1行.n1列和m2行.n2列,它们简单自然连接结果C=A*B(i==j),其中i表示表A中列号,j表示表B中的列号,C为A和B的笛卡儿积中满足指定连接条件的所有记录组,该连接条件为表A的第i列与表B的第j列相等. 如:         1 2 3                3 5 A  =  2 3 3         B =  1 6       

SVM学习笔记

SVM入门(一)-- SVM的八股简介 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本.非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中. 支持向量机方法是建立在统计学习理论的VC 维理论和结构风险最小原理基础上的,根据有限的样本信息在模型的复杂性(即对特定训练样本的学习精度,Accuracy)和学习能力(即无错误地识别任意样本的能力)之间寻求最佳折衷,以期获得最好的推广能力(或

数据结构学习笔记——线性表

第2章  线性表 2.1  线性表的类型定义  线性结构的特点是:在数据元素的非空有限集中,(1)存在唯一的一个被称做“第一个”的数据元素:(2)存在唯一的一个被称做“最后一个”的数据元素:(3)除第一个之外,集合中的每个数据元素只有一个前驱:(4)除最后一个外,集合中每个数据元素均只有一个后继. 线性表的类型定义 线性表(linear_list)是最常用的且最简单的一种数据结构.一个线性表是n个数据元素的有限序列.在稍复杂的线性表中,一个数据元素可以由若干个数据项(item)组成.在这种情况下

数据结构学习笔记-----------------线性表

线性结构的特点:在数据的非空有限集中 一.存在唯一一个被称为"第一个"的数据元素 二.存在唯一一个被称为"最后一个"的数据元素 三.除第一个之外,集合中每个数据元素均只有一个前驱 四.除最后一个之外,集合中每个数据元素均只有一个后继 一个线性表是n个数据元素的有限序列 序偶关系:两个固定次序的客体组成一个序偶,它常表达连个客体之间的关系. 非递减有序排列:从小到大,允许中间有相等的情况

SVM学习笔记1-问题定义

问题定义: 给出一些样本,包含两类.svm试图找到一个超平面,将数据分开,并且每种样本到超平面的距离的最小值最大. 输入样本:$\{x_{i},y_{i}| 1\leq i\leq n \}$,$y_{i}\in \{-1,1\}$ 超平面定义:$w^{T}x+b=0$ 设某一个采样点$x^{(i)}$到超平面的距离为$\gamma^{(i)}$,那么从$x^{(i)}$作方向为w的射线,其与超平面的交点为B,采样点到B的距离为$\gamma^{(i)}$,那么B可以用这样的向量表示$B=x^{

SVM学习笔记5-SMO

首先拿出最后要求解的问题:$\underset{\alpha}{min}W(\alpha)=\frac{1}{2} \sum_{i,j=1}^{n}y^{(i)}y^{(j)}\alpha_{i}\alpha_{j}k_{ij}-\sum_{i=1}^{n}\alpha_{i}$,使得满足:(1)$0 \leq \alpha_{i}\leq C,1 \leq i \leq n$(2)$\sum_{i=1}^{n}\alpha_{i}y^{(i)}=0$ 求解的策略是每次选出两个$\alpha$进