SVM,英文全称为 Support Vector Machine,中文名为支持向量机,由数学家Vapnik等人早在1963年提出。在深度学习兴起之前,SVM一度风光无限,是机器学习近几十年来最为经典的,也是最受欢迎的分类方法之一。
1 SVM与“三八线”
不少人在初识SVM时会感觉到高深难懂。现在,就从你我熟知的“三八线”来走进SVM的思想内涵。
这样的“三八线”就可以看作二维空间中SVM的形象解释,它传递出了以下几点重要的信息:
1.是一条直线(线性函数);
2.能将桌面分为两个部分,分别属于你和我(具有分类功能,是一种二值分类);
3.位于课桌正中间,不偏向任何一方(注重公平原则,才能保证双方利益最大化)。
以上三点也正是SVM分类器的中心思想所在。
这是因为:SVM本质模型是特征空间中最大化间隔的线性分类器,是一种二分类模型。
首先,线性分类器指的就是线性函数;其次,最大化间隔离不开公平原则;再者,其解决的是二值分类问题(分两类);而特征空间则表明了其学习分类的对象是样本的特征数据。接下来,我们将会一一了解到这些SVM的本质精髓。
2为何叫支持向量机?
通过回忆“三八线”的故事,我们已经清楚了SVM的几个中心思想。下面我们再来了解支持向量机这一名称的渊源。
之所以叫支持向量机,因为其核心理念是:支持向量样本会对识别的问题起关键性作用。那什么是支持向量(Support vector)呢?支持向量也就是离分类超平面(Hyper plane)最近的样本点。
3 什么是线性分类器?
SVM是一种线性分类器,分类的对象要求是线性可分。因此我们首先要了解什么是线性可分与线性不可分。
在二维的平面课桌上,一条直线就足以将桌面一分为二。但如果扩展到三维空间中,则需要一个平面(比如一面墙、一扇屏风等)才能将立体空间区域一分为二。而对于高维空间(我们无法用图画出),能将其一分为二的则称为超平面。
我们已经清楚SVM是一种线性分类器,无论是二维空间的直线,还是三维空间的平面,以及多维空间的超平面,它们的数学表现形式都有着相同的特性,那就是都属于线性函数。线性函数的特点是计算简单,易于求解。
对于我们熟悉的二维空间(平面坐标),直线的函数表达式为:
y=ax+b
4.致力间隔最大化
如何找到最合适的分类超平面?依据的原则就是间隔最大化。
所谓间隔最大化,说的是分类超平面跟两类数据的间隔要尽可能大(即远离两边数据),这就要提到我们前面说到的公平原则。“三八线”要划在课桌正中间,不偏向任何一方,才能保证双方利益最大化。对于分类超平面来说,也就是要位于两类数据的正中间,不偏向任何一类,才能保证离两边数据都尽可能远,从而实现间隔最大化。
如左下图所示,有两类样本数据(分别用橙色和蓝色的小圆圈表示),我们可通过红色或蓝色两条直线(L1或L2)将这两类样本数据分开。事实上,我们还可以画出很多条直线将两类样本分开,也就是说,存在有多个可行的线性分类器能将两类样本分类。SVM的最终目标是:以间隔最大化为原则找到最合适的那个分类器。

从直观上看,图中蓝线L2偏向了橙色数据一方,有失公平原则,因而不是我们要找的理想的分类器。红线L1则较注重公平,不偏向任何一类数据,从而能较好地确保离两类数据都尽可能远,实现间隔最大化,这样的分类超平面具有更好的泛化性能,分类更加准确,正是我们要找的最合适的分类器。
我们注意到,图中两条虚线(S1和S2)上的圆点数据即为支持向量(Support vector),它们距离分类超平面最近。现在我们仅保留这些支持向量数据点进行分析(右上图),可以看出两条虚线之间的间隔距离为r。依据公平原则,支持向量到分类超平面的距离则为r/2,这个值即为分类间隔。间隔最大化,就是最大化这个值(r/2)。
由此可以看出,分类间隔值(r/2)只与支持向量数据点有关,与其他非支持向量数据点无关。这也正好诠释了我们在文中开头说到的:SVM的核心理念是支持向量样本会对识别的问题起关键性作用。也就是说,分类超平面的确定仅取决于支持向量。
SVM 通过选择一个核函数 K ,将低维非线性数据映射到高维空间中。原始空间中的非线性数据经过核函数映射转换后,在高维空间中变成线性可分的数据,从而可以构造出最优分类超平面。
简单地说,核函数是计算两个向量在隐式映射后空间中的内积的函数。核函数通过先对特征向量做内积,然后用函数 K 进行变换,这有利于避开直接在高维空间中计算,大大简化问题求解。并且这等价于先对向量做核映射然后再做内积。
多项式核函数,可根据R和d的取值不同,而有不同的计算式。
高斯核函数,可根据实际需要灵活选取参数σ,甚至还可以将原始维度空间映射到无穷维度空间。不过,如果σ取值很大,会导致高次特征上的权重衰减快;如果σ取值很小,其好处是可以将任意的数据映射成为线性可分,但容易造成过拟合现象。

参考https://baijiahao.baidu.com/s?id=1639719949469452687&wfr=spider&for=pc
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/215814.html原文链接:https://javaforall.net
