支持向量机(SVM)概述

导入:

小例子:魔鬼和天使玩了一个游戏,魔鬼在桌上放了两种颜色的球,如图1所示。魔鬼让天使用一根木棍将它们分开。这对天使来说,似乎太容易了。天使不假思索地一摆,便完成了任务,如图2所示。

支持向量机paddle代码 支持向量机 实例_机器学习


支持向量机paddle代码 支持向量机 实例_机器学习_02


魔鬼又加入了更多的球。随着球的增多,似乎有的球不能再被原来的木棍正确分开。如图3所示:

支持向量机paddle代码 支持向量机 实例_线性分类器_03


按照这种球的摆法,世界上貌似没有一根木棒可以将它们完美分开。但天使毕竟有法力,他一拍桌子,便让这些球飞到了空中,然后凭借念力抓起一张纸片,插在了两类球的中间,如图4所示。从魔鬼的角度看这些球,则像是被一条曲线完美的切开了。

支持向量机paddle代码 支持向量机 实例_线性分类器_04


后来,“无聊”的科学家们把这些球称为“数据”,把木棍称为“分类面”,找到最大间隔的木棒位置的过程称为“优化”,拍桌子让球飞到空中的念力叫“核映射”,在空中分隔球的纸片称为“分类超平面”。这便是SVM的童话故事。

有了基本的了解之后,我们进入支持向量机的科学解释。我们首先要了解“线性分类器”。

线性分类器

给定一些数据点,它们分别属于两个不同的类,现在要找到一个线性分类器把这些数据分成两类。如果用x表示数据点,用y表示类别(y可以取1或者−1,分别代表两个不同的类),一个线性分类器的学习目标便是要在n维的数据空间中找到一个超平面,这个超平面的方程表示为:w^T *x+b=0(w的转置与x求内积再加上b(b可认为偏置项)。对于1和-1的分类涉及到logistic回归的问题,做了变形,也就是:logistic回归是从特征学习出一个0/1分类模型,现在替换成1/-1。

然后将𝜃^𝑇*x=θ0+θ1𝑥1+𝜃2𝑥2+···+𝜃𝑛𝑥𝑛(x0=1)中的θ0替换为b,最后将后面的θ1𝑥1+𝜃2𝑥2+···+𝜃𝑛𝑥𝑛替换为 𝑤𝑇𝑥(w的转置与x求内积)。如此,则有了𝜃𝑇x=𝑤𝑇x+b,(θ的转置与x的内积 = w的转置与x的内积 + 偏置)。也就是说除了y由y=0变为y=−1外,线性分类函数跟Logistic回归的形式化表示ℎ𝜃(x)=g(θTx)=g(wTx+b)没区别。这里已知超平面为𝑤𝑇x+b=0,当超平面小于0或者大于0时,分别进行了二分类的划分,一类属于-1,一类属于1。如图所示:(注:𝜃𝑇x代表𝜃的转置与x的内积,w𝑇x代表w的转置与x的内积)

支持向量机paddle代码 支持向量机 实例_转置_05


至此,线性分类器就概述完了,让我们共同看一个线性分类器的例子。现在有一个二维平面,平面上有两种不同的数据,分别用圈和叉表示。由于这些数据是线性可分的,所以可以用一条直线将这两类数据分开,这条直线就相当于一个超平面,超平面一边的数据点所对应的y全是−1,另一边所对应的y全是1。这个超平面可以用分类函数f(x)=w^T x+b表示,当f(x)等于0的时候,x便是位于超平面上的点,而f(x)大于0的点对应y=1的数据点,f(x)小于0的点对应y=−1的点,如图5所示。

支持向量机paddle代码 支持向量机 实例_转置_06


到这里有同学可能就会问了,假如左右各有两个数据点,在他们中间可以划分无数条直线,但是哪条才是最好的呢?然后就引出了最大间隔分类器。在介绍最大间隔分类器之前,我们要先知道空间内的几何距离的概念。

几何距离

在超平面w^Tx + b = 0确定的情况下,|w ^ T x +b|能够表示点 x 到距离超平面的远近,而通过观察w ^T x +b的符号与类标记 y 的符号是否一致可判断分类是否正确。

假定对于一个点 x ,令其垂直投影到超平面上的对应点为x0,w 是垂直于超平面的一个向量,γ 为样本 x 到分类间隔的距离,如下图所示。

支持向量机paddle代码 支持向量机 实例_机器学习_07


有 x = x0 + γ(w / ||w||) ,其中||w||为w的范数。又由于x0是超平面上的点,满足f(x0) = 0,代入超平面的方程 w ^T x + b = 0就可以得到:

支持向量机paddle代码 支持向量机 实例_数据_08


为了得到γ的绝对值,令γ乘上对应的类别 y ,即可得出几何距离(用γ~表示)的定义:

支持向量机paddle代码 支持向量机 实例_转置_09


其中γ^表示样本点的函数间隔最小值。

最大间隔分类器

对一个数据点进行分类,当超平面离数据点的“间隔”越大,分类的确信度(confidence)也越大。所以,为了使得分类的确信度尽量高,需要让所选择的超平面能够最大化这个“间隔”值。这个间隔如下图中的Gap / 2所示。

支持向量机paddle代码 支持向量机 实例_数据_10


这里要找的最大间隔分类器中的“间隔”指的就是几何距离,在上文中我们已经介绍过。因为是要找最大间隔的几何距离,所以目标函数就是:max γ~ ,同时需要满足一些条件,根据间隔的定义,有:

支持向量机paddle代码 支持向量机 实例_支持向量机paddle代码_11


回顾一下几何距离的定义

支持向量机paddle代码 支持向量机 实例_数据_12


可知,如果另函数间隔γ^等于1,则有几何间隔 γ~ = 1 / ||w|| 而且 Yi(w ^T x +b)>1 ,从而上述目标函数转化成了:

支持向量机paddle代码 支持向量机 实例_线性分类器_13


在相应的约束条件下,最大化 1/||w|| 的值,而 1 / ||w||便是几何间隔γ~。之所以令γ^ 等于1,是为了方便推导和优化。如下图所示,中间的实线就是寻找到的最优超平面,其到两条虚线的距离相等,这个距离就是几何距离γ~,两条虚线之间的距离等于2倍几何距离。而虚线上的点则是支持向量机。由于这些点刚好在边界上,所以他们满足y(w ^T x +b)= 1,对于那些在1一侧而不再虚线上的点则满足关系式而大于1,。同理对于另一侧虚线上的点则满足关系式等于-1。到这里就简单的介绍了支持向量机。

支持向量机paddle代码 支持向量机 实例_线性分类器_14