关闭

SVM(Support Vector Machine)读书笔记一(最佳分割超平面)

标签: svm机器学习
3309人阅读 评论(2) 收藏 举报
分类:

背景

分类问题中,在一个线性不可分的样本上,通常需要用到一些Non-linear的特征,把低维度空间上的样本投影到高维度上,从而使得这些样本在高维度线性可分。但是这个投影的过程通常也会有以下两个问题:

  1. 如果在原样本中加了太多的高次多项式的特征,首先会导致过拟合,模型的泛化能力会很差;
  2. 多项式组合会有指数级别的组合方式,这使得在投影后的样本空间中维度非常高,这也会消耗太多的计算资源和空间资源

为了解决上面两个问题,于是诞生了SVM,SVM有如下两个优势:

  1. 首先SVM是基于结构风险最小化原理,即它的VC维很小(相比于它的维度),不容易导致过拟合;(VC维是衡量模型复杂度的一个指标,VC维越大说明hypothesis空间越大,越不容易得到一个理想的模型,它和train error一起决定了泛化误差的上限)。
  2. 其次,利用SVM的优化过程,可以利用kernel trick,把在高纬度空间中的计算放到低纬度空间来进行,因此可以把SVM的特征投影到高纬度甚至无穷维,并且消耗很小的计算和存储资源。

接下来来介绍SVM是怎么工作的,以及它为什么有上面两个优势。本节主要介绍最佳分割平面及其求解过程以及为什么它是最佳的。

最佳分割超平面

现在假设有两类线性可分的样本,一类圈圈,一类叉叉。分类问题就是要找一个超平面,将这两类分开,但是能分割开这两类的超平面有很多,如下面的图所示。感知机算法就是随机的找到一个能够分开的超平面,它并不关心这个超平面如何。下面三个图中,直觉上感觉,第三个超平面是最理想的。
不同分割面
那么为什么第三个超平面是最理想的呢?原因是测试集上的样本是我们观测得到的数据,而观测到的数据和它真实分布是有一定的误差的,下面三个图中灰色的圆圈表示了每个平面能够容忍误差的大小,当误差超过这个圆圈的范围,分割面就要犯错误了,所以第三个图的容忍误差的能力是最强的。这是从直观上的一个解释,下面推导SVM的过程中会解释为什么这个是最佳的分割面。

这里写图片描述
这样,能容忍误差的能力最大的那个超平面是我们要的,定义margin为,由分割平面开始往两边推,到碰到样本点时候的距离。如下面的图所示,黄色部分即为margin。
这里写图片描述

最佳分割平面求解

符号定义如下,其中xw是属于d维空间中的点,b是超平面的偏差,h是目标求解的hypothesis。

x=x1x2...xd;w=w1w2...xd;b=bias;h(x)=sign(wTx+b)

这里写图片描述
如果一个超平面可以完全把正负类样本分开,那么分布在超平面两侧的样本点表示成下图中的形式,那么所有样本可以用公式归纳成

yn(wTxn+b)>0,n=1,2...N
.
假设ρ=minn=0,1...Nyn(wTxn+b), 如果能够完全分开,则ρ>0。然而在wTx+b=0这个超平面上,对w做一下scaling,即乘以或除以一个大于零的数,这个平面是不会变的。那么如果上式中对w做一个除以ρ的scaling,得到如下:
ρ/ρ=minn=1...Nyn(wTxn+b)/ρ=1

因此,yn(wTxn+b)>0,n=1,2...Nminn=0,1...Nyn(wTxn+b)=1是等价的。于是,我们的优化目标变成了,在能够完全把两类点分开的前提下最大化margin。
maxw,bmarginminw,byn(wTxn+b)=1,n=1,2...N

但是margin怎么求呢,这就需要用到高中时候的几何知识了。
这里写图片描述
假设xx是分割平面上的两个点,连接这两个点的向量为wT(xx)=b+b=0,推出w向量和这个超平面是垂直的,那么要算x到平面的距离,就是算xx线段投影到w方向上的长度
dist(x,h)=|uT(xx)|=|wTxwTx||w|||=|wTx+b|||w||;uTw

上面最大化margin的式子,就是最大化离平面最近的那个距离,利用yn去掉绝对值,又可以写成
maxw,b(mindist(xn,h))=maxw,bminyn(wTxn+b)||w||=maxw,b(1||w||minn=1..Nyn(wTxn+b))

上式可以利用后面等于1的条件,简化成
maxw1||w||;s.tminn=1..Nyn(wTxn+b)=1

为了简化优化方法,最大化上面这个式子,就是最小化下式
minw12wTw;s.t.minn=1..Nyn(wTxn+b)=1

利用w的缩放,可以把上面式子写成下面二次规划(QP问题)的标准型
minw12wTw;s.t.yn(wTxn+b)1,n=1,2...N

上面这个式子是二次规划的标准型,把它的一些参数,丢进二次规划的软件中就可以得到最佳的wb了。

二次规划(QP问题)

QP问题的标准型式如下:

minimize:uRL12uTQu+pTusubjecttoaTmucm(m=1,2...M)

我们不用关心这个问题怎么借,其中需要用到比较多的数学知识,只需要知道,怎么样把这个问题的参数拿出来,丢给一些专门解QP问题的软件去解。
把上面的条件整理下,aTmcm写成矩阵的形式:
A=aT1aT2...aTm;c=c1c2...cm

利用矩阵形式,QP问题可写成下面的形式:
minimize:uRL12uTQu+pTusubjecttoAuc

uQP(Q,p,A,c)

我们只要求出Q,p,A,c这四个参数,就可以把它丢到解QP问题的软件中求解出u了。
对于SVM中那个优化目标的式子,我们最终要求得的u=[bw];L=d+1,然后把目标12wTw写成12uTQu+pTu的形式。
wTw=[bwT][00Td0dId][bw]

yn(wTxn+b)1[ynynxTn]u1

这样解QP问题的四个参数就出来了
Q=[00Td0dId];p=0;A=y1ynxT1y2y2xT2.......ynynxTn,c=1

为什么最大分割面的直线是最佳的

SVM最优化函数和正则化的关系

SVM:minw12wTw;Ein=0

RegularizationminEin;wTwC

SVM是让w的长度最短,并且让训练误差为0,而正则化是让训练误差最小,然后把w的长度限制在一个范围内。从这里可以看出SVM的hypothesis空间比正则化更小,因此可以有更好的泛化能力。

从VC维的角度看SVM

根据VC维理论泛华误差Eout=Ein+O(dvc/N),因此dvc越小越好,dvc代表模型复杂度,定义为这个模型能够打散的最多的点的个数。SVM最后得到的是一个margin最大的w,这个最大的w能够打散的点肯定远远小于一个没有margin限制的超平面。因此最大分割平面的模型复杂度很小,即使在高维空间中。为了更好理解margin的VC维很小,下面来举一个例子。
下面这个图中,如果没有margin限制,那么3个点可以做出8中分割超平面来
这里写图片描述
但是如果限制了最大margin,8种种的很多分割平面是不符合要求的(如下面第3个图和第4个图),如下图,因此模型的vc维也会比一般模型更小。
这里写图片描述
有理论可以证明

dvcmin([R2/ρ2],d)+1;forall||x||Rρmargin

证明略。

总结

本文介绍了SVM的最大分割平面求解,并解释了为什么最大分割面是泛化风险最小的。
后面还会有以下几个问题

  1. SVM如何处理线性不可分的样本
  2. SVM如何利用SVM对偶问题推导出利用kernel方法把低维空间的样本推广到高维空间甚至无穷维空间中
  3. SVM在实际应用中如何选择参数及kernel函数
  4. Support Vector的背后意义

    我的微信公众号是:数据科学家的日常,会记录一些我平时的学习心得以及各种机器学习算法的学习笔记,欢迎关注。

2
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:119633次
    • 积分:1767
    • 等级:
    • 排名:千里之外
    • 原创:33篇
    • 转载:6篇
    • 译文:0篇
    • 评论:129条
    我的微博
    博客专栏
    最新评论