简单的SVM(线性可分的情况)笔记/理解

2017-09-25  本文已影响828人  glassyw

支持向量机(support vector machine,SVM)是有些难理解的部分,笔者通过查询一些资料,整理下个人理解。因数学水平有限,并没有进行完整的数学推导。:D

ps:简单起见(其实主要是我太菜菜:(),这里讨论的是2D线性可分的情况,以及忽略了公式推导

一、为什么要出现SVM?

如果你已经学过逻辑回归的话,面对下图的分类问题很快能想到可以找出将圈圈和方块分类的线,也就是说把二者分类。但是,从数据样本来看,你可以找出很多条线,比如下图的绿线和红线,它们都可以将样本分类。那么,到底哪条才是最优的呢?
这时候我们采用一个参考,间距(margin),就是你找到的那条线h,和贴它最近的那个点的距离,这种点我们也称它为支持向量,(比如图中贴近线的圈圈和方块),所有贴近边际线的都是支持向量。


间距当然是越大越好,你看看下图红线和绿线的分类效果,明显是间距更大的绿线表现更好。
方便理解起见,这是2D的,如果是在多维空间,SVM做的事,就是找到那个区分二类的超平面,使间距最大(margin)

二、如何找到超平面?

首先定义超平面为:WX+w0=0
(其中W=[w1,……wn],X=[x1,……xn])
比如说在2D,此时只有两个特征向量,即x=[x1,x2]
此时超平面方程为:w0+w1x1+w2x2=0
在超平面之上:w0+w1x1+w2x2>0
在超平面之下:w0+w1x1+w2x2<0
之前说了,支持向量是贴在距离超平面最小距离的边际线上的点,现在我们已经定义了超平面的方程,接下来要做的就是调整w(weight),使超平面定义边际的两边:
h1:w0+w1x1+w2x2=1 (y=+1)
h2:w0+w1x1+w2x2=-1 (y=-1)
这里的h1,h2就是我们说的决策边界
由h1,h2得出y(w0+w1x1+w2x2)=1,这就是支持向量的表达式了。

三、求间距(margin)

现在我们已经定义了超平面的方程,也已经定义了决策边界,那么怎么求出最大间距呢?
因为涉及数学推导,在这里就略过,想要看具体的推导,可以看
http://www.cnblogs.com/LeftNotEasy/archive/2011/05/02/basic-of-svm.html
这里给出结论:

前面给出了超平面的公式:WX+w0=0
X是特征向量,在2D里就是[x1,x2],那么只要找到合适的W就可以带入已知的样本,得到分类结果。
结果如下:

因为涉及很多数学推导,在这里略过,只给出结论,如果想了解公式推导可以查看下面给出的参考资料。

四、举个栗子

我认为理解一个算法原理最好的办法就是尝试用简单的例子去手动算一遍或者跑一遍。于是,在这里采用现成的例子手动计算一遍,看看SVM是如何工作的。:)

现在已三个样本,(1,1) (2,3) (2,0)
圈圈(1,1) (2,0)为-1类
方块(2,3)为+1类
这里取拉格朗日乘子为1,把样本带入公:
w=(2,3)-(1,1)=(a,2a)
因为(1,1)被分为-1,所以g(1,1)=-1
(2,3)被分为+1,所以g(2,3)=+1
如上图分别带入再解方程可以求出最后的式子:g(x)

五、其他问题

之前已经说过了,为了简单起见(主要是我太菜菜:(),这里讨论的是只有两个特征值的情况,也就是说是2D的,且是线性可分的情况。
那么,线性不可分的情况呢?(这里先说用核函数解决:D)
线性不可分的情况待研究研究再写吧。
以上。

参考资料:
图片来源
公式推导参考
wiki

上一篇下一篇

猜你喜欢

热点阅读