支持向量机(Support Vector Machine,以下简称SVM),作为传统机器学习的一个非常重要的分类算法,它是一种通用的前馈网络类型,最早是由Vladimir N.Vapnik 和 Alexey Ya.Chervonenkis在1963年提出,目前的版本(soft margin)是Corinna Cortes 和 Vapnik在1993年提出,1995年发表。深度学习(2012)出现之前,如果不考虑集成学习的算法,不考虑特定的训练数据集,在分类算法中的表现SVM说是排第一估计是没有什么异议的。
SVM本来是一种线性分类和非线性分类都支持的二元分类算法,但经过演变,现在也支持多分类问题,也能应用到了回归问题。本篇文章重点讲解线性支持向量机的模型原理和目标函数优化原理。
目录
感知机模型
理解线性支持向量机
一、感知机模型
![d85a560b2dbe96b6914f1821898db101.png](https://img-blog.csdnimg.cn/img_convert/d85a560b2dbe96b6914f1821898db101.png)
在讲解SVM模型之前,我们可以先简单了解感知机模型的原理,因为这两个模型有一些相同的地方。在二维平面中,感知机模型是去找到一条直线,尽可能地将两个不同类别的样本点分开。同理,在三维甚至更高维空间中,就是要去找到一个超平面。定义这个超平面为wTx+b=0(在二维平面中,就相当于直线w_1*x+w_1*y+b=0),而在超平面上方的点,定义为y=1,在超平面下方的点,定义为y=-1。而这样的超平面可能是不唯一的,那么感知机是怎么定期最优超平面呢?从感知机模型的目标函数中,我们了解到它是希望让所有误分类的点(定义为M)到超平面的距离和最小。其目标函数如下:
![2bb672230805ac69abce984488b2b7e6.png](https://img-blog.csdnimg.cn/img_convert/2bb672230805ac69abce984488b2b7e6.png)
(注:加入y_i是因为点若在超平面下,w*x_i+b为负数,需要乘上对应的y)
当w和b成比例增加了之后,比如都扩大N倍,会发现,分子和分母都会同时扩大N倍,这对目标函数并不影响。因此,当我们将W扩大或缩小一定倍数使得,||w||=1,分子也会相应的扩大或缩小,这样,目标函数就能简化成以下形式:
![d29f1ecef40687751a4d41d308782663.png](https://img-blog.csdnimg.cn/img_convert/d29f1ecef40687751a4d41d308782663.png)
这个思想将会应用到支持向量机的目标函数优化上,后文将会详细讲解。
二、理解线性支持向量机
2.1线性支持向量机思想
正如上文所说,线性支持向量机的思想跟感知机的思想很相似。其思想也是对给定的训练样本,找到一个超平面去尽可能的分隔更多正反例。不同的是其选择最优的超平面是基于正反例离这个超平面尽可能远。
![b4b7a8def6d0809795d761674dceaa8f.png](https://img-blog.csdnimg.cn/img_convert/b4b7a8def6d0809795d761674dceaa8f.png)
线性支持向量机模型
从上图可以发现,其实只要我们能保证距离超平面最近的那些点离超平面尽可能远,就能保证所有的正反例离这个超平面尽可能的远。因此,我们定义这些距离超平面最近的点为支持向量(如上图中虚线所穿过的点)。并且定义正负支持向量的距离为Margin。
2.2函数间隔和几何间隔
对SVM思想有一定理解之后,设超平面为wTx+b=0。我们讲解一下函数间隔和几何间隔的区别。
给定一个样本x,|wTx+b|表示点x到超平面的距离。通过观察wTx+b和y是否同号,我们判断分类是否正确。所以函数间隔定义γ'为: