支持向量机(Support Vector Machine)

本文详细介绍了支持向量机(SVM)的概念,包括超平面、函数间隔最大化、目标函数的化简以及对偶问题与KKT条件。通过讨论线性与非线性SVM,尤其是软间隔SVM,阐述了SVM如何处理过拟合问题。文章还探讨了核函数的作用,如高斯核,并比较了不同核函数的优劣。此外,还介绍了SMO算法及其在SVM实现中的应用,包括多个版本的算法实现及优化策略,展示了支持向量机的实际效果。
摘要由CSDN通过智能技术生成

支持向量机

linear regression , perceptron learning algorithm , logistics regression都是分类器,我们可以使用这些分类器做线性和非线性的分类,比如下面的一个问题:


10624272-f889f30cb53b684a.png
GV0SHYC3S{P{Q4QVB66UN6T.png

这里的每一条线都是可以把这个平面分开的,支持向量机要做的就是要在这些可以选择的直线中选择一条最好的直线来作为分类的直线。再给一个简单的解释,比如下面的三个图片,圆圈区域越大,说明这条直线对这些点放错的容忍度就越高:


10624272-26ba65705a08c78b.png
0T0FN3C5MKTQE`DO{N}QX(C.png

①超平面

介绍SVM之前,先来看超平面的概念:
其实超平面就是用于分割当前维度的一个空间。比如一维可以用一个点来进行分割,二维用一条线来进行分割,那么这些点和线就叫做“超”平面。加双引号是因为他们其实并不是正在的超平面,因为超平面是要求大于三维的。
所以四维空间里面的超平面就是三维。比如在二维的空间里的超平面就是一条直线:

10624272-4573a91b0e7687d5.png

三维里面的超平面:


10624272-e81013706a78c0ff.png

(其实这里的应该都不能叫超平面,因为超平面是三维以及三维以上的)
我们把a , b , c看做是W0 , W1 , W2...,把x , y , z看做是x1 , x2 , x3,那么就有:


10624272-c56b947b3f6a43f3.png

而W向量就是这个平面的法向量,我们要求的就是法向量,证明一下:
以二维为例:


10624272-b18b6cfaf1f222b9.png

10624272-abdcc67b5978793e.png

相减得到:
10624272-9f9be9d6351d0521.png

而[ (X_0 - X_1) , (Y_0 , Y_1)]这个点就在这个平面上,所以得到了:


10624272-dd2f604f7eb8fd5b.png

所以W就是平面的法向量,这上面的X代表的是这个平面而不是点。

②函数间隔的最大化

刚刚说到支持向量机也不是找超平面了,而是找最好的超平面,也就是对于点的犯错的容忍度越大越好,其实就是函数间隔越大越好:


10624272-4421f47ca4398cb0.png

右边的明显要好过左边的,因为左边的可犯错空间大啊。所以我们要寻找的就是最大最肥的超平面——hperplane。

函数的间隔最大,其实就是距离直线距离最短的点离直线的距离要最大。所以先要知道直线的距离怎么求:
首先我们假设X0在平面上的投影是X1,则肯定有法向量W垂直于X0X1,:

10624272-76f69840c94ba31a.png

10624272-d6a51b24df223aea.png

又因为:
10624272-b75d2ba0eb4cf083.png

10624272-45137c9172cc1455.png

10624272-f21108016eb1d5f7.png

右因为X1在平面上的,前半部分就是-b了,可以写成:
10624272-32a507371def6c60.png

和上面那条式子相等就得到:
10624272-1a8b454f205f3b45.png

这就是我们要求的点到直线的距离了。而如果这个hperplane是正确的话,那么所有点的分类都是对的,那么我们就默认他是对的,于是有:
10624272-501885a93c839bba.png

这里可以相乘的条件是,我们默认label正确的是1错误的是-1,如果你的错误是0正确是1的话公式是不同的。乘上一个Y首先是可以去掉绝对值,使得函数变得可微,另外乘上之后函数值的绝对值也不会有变化,使得求解更加方便。
所以,最后的我们的优化目标就是这样了:
10624272-ac5ba85d9c643c02.png

里面的minimize是指找到距离hperplane最小距离的点,最外面就是挑选一个最好的W,b使得这个距离最小的点距离hperplane是最大的。

③目标函数的化简

对于上面的式子,注意看到里面的那个式子:

10624272-8fa705f4e5f1e2cc.png

举一个例子:
10624272-a97b2db13af0a05d.png

我们代入(4,3)这个点,得到19,似乎这个数字太大了,我们不想要他这么大,我们两边同时除去19,这个时候我们的超平面就变成了:
10624272-4ab3576d0a1f0034.png

数字是边了,但是这个超平面还是在这个位置,所以可以认为超平面是没有变化的,这就证明了我们上面那个式子:
10624272-8fa705f4e5f1e2cc.png

是可以通过对w,b进行放缩而把左边的结果放大的无限多倍的。既然这样,那这个东西留着有什么意义,直接放缩到1就可以了,于是我们把他放缩到1,也就是最小值是1。其实等于1都是差不多的,因为最小值之后都是1,于是就是有了:
10624272-1e6cb793a9fe7706.png

那么target fomula就可以变成这样:
10624272-844f62903f269abe.png

放缩之后并不是就完了,这个是要加入当做条件来使用的。对于这个:
10624272-d1ec2c431a554408.png
事实上我们不太喜欢化简这样的,找最大化的不就是找最小化的W吗?找最小化的W不就是找最小化的W*W^T吗?不如再加个1/2?
所以问题就变成了:
10624272-69f7f17304dd6a0a.png

为什么要加上1/2呢?其实是为了后面求导的时候方便化简的,但是这样对结果又没有什么影响。而W变成平方其实就是用上凸优化,因为平方之后就个凸函数了,这样变换同样对于最优结果没有任何影响。
所以最后要优化的结果:
10624272-5eeda9dfeb9ae305.png

④Dual problem and KKT condiction

对于上述有条件的最优化问题,自然就要用上lagrange乘子法了。


10624272-abb4381968e7fd99.png

右边的约束条件是要小于等于0的,α ≥ 0,只不过前面是符号所以转一下而已。
到这里,其实只要把等式扔到Quadratic Programming里面直接计算就好了。下面的步骤其实都是围绕解决这个优化问题展开的。



先在这停顿一下,我们考虑一下:

⑴SVM的机器学习可行性问题:

首先先来观察一下这个式子,感觉似曾相识。他和L2 regularization很像,对于L2 regularization,首先是先要计算Ein的最小值,所谓的Ein就是该模型在当前的训练数据上犯错误的期望值。然后再正则化,所以L2是Minimizing Ein and Regularized L2 Paradigms;而支持向量机正好相反,他是先假设我这个平面是分类正确的,然后minimize W方

10624272-58e6febdee21513c.png

后面我们会用这个结论的。
回顾一下机器学习要解决的问题:
①Ein ≈ Eout
Ein刚刚解释过了,Eout就是这个model在全局所犯的错误,Ein ≈ Eout就是要求这个model是可以反映全局的,如果不能反映,那就是过拟合了。
②Ein ≈ 0
这个就是训练错误要接近于0,在这一步就容易发生过拟合的现象了。
而Ein ≈ Eout,也就是泛化能力是被VC dimension限制的,也就是说,越复杂的模型他的VC dimension越复杂。也就是VC bound右边的Ω会很大,VC bound就会很大,导致Ein 远远小于Eout了,因为复杂的模型意味着更加小的Ein。
再提一下,VC dimension就是break point - 1得到的。
如果是这样的话,那么正常来说SVM的VC dimension也会很大啊,因为他的W是和数据维度相关的,数据多少维,那么W就多少个,而W代表的是自由度,通常也就代表这VC dimension, 但是SVM的效果还是很好,为什么呢?是什么东西限制着SVM的VC dimension?
我们来看一个例子:
在一个圆上,有三个点,你想找到一条可以分开的直线,可以得到VC dimension是3(之前有同学看到在一个圆上分类他的VC dimension是无限的的,这是因为有无数多个点给你玩,这里就三个点,无限你又用不了,所以就只能是三个了啦),但是如果加上限制条件,这条线宽是5,那么VC dimension就是0了,因为没有地方塞进去。所以如果是large margin,VC dimension ≤ 3的。如图:
10624272-16a57b1c9269e835.png

10624272-83fc1692fe5c05d3.png

所以,large margin就是SVM的VCdimension的限制条件,导致它的分类效果很好,VC dimension小了自然泛化能力就好了,这里就解决了Ein ≈ Eout的问题,Ein ≈ 0这就是我们后面要用凸优化来解决的问题了。



回到正题:

10624272-abb4381968e7fd99.png

如何优化我们的target function?
上面的讨论我们已经得到了VC dimension ≤ d + 1, 我们悲观估计一下,就算SVM的VC dimension是d + 1了,加上d就是数据维度,加上的1是偏置值b。那么如果数据维度很大的话,计算复杂度是很高的,另外,现在我们所研究的SVM还是linear separable的,如果是来个nonlinear transform,数据维度就更加大了,再加上一般数据数量都是很的,时间会很长。所以我们要想一个方法来把数据维度d转移到其
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值