支持向量机(上)

支持向量机(support vector machines, SVM)是一种二分类模型,当然它也可以用作解决回归问题,这里我们只讲解其在分类问题上的应用。之前已经写过感知机模型,支持向量机就是在感知机的基础上加上了间隔最大化的概念以及核技巧,间隔最大化使得其泛化能力要优于感知机模型,而核技巧使其具有了处理非线性数据的能力。

支持向量机分为:

  1. 线性可分支持向量机
  2. 线性支持向量机
  3. 非线性支持向量机

本篇博客主要为大家讲解第一类,线性可分支持向量机

首先要解释一下,到底什么是线性可分支持向量机呢?其实很简单,即当分类数据是线性可分的情况下我们通过使间隔最大化而构造的支持向量机模型就是线性可分支持向量机。

接下来我们考虑一个问题,如下图所示,哪一个分类超平面才是最好的分类超平面呢?

相信大多人都会凭直觉选择超平面2,确实超平面2要优于超平面3以及超平面1,但是这是为什么呢?假设我们将上图中的圆点记作-1类,菱形点记作1类。现在在上图的基础上又多了一个样本点,如下图所示:

橘黄色的点为新增的样本点,显然它应该有更大的可能性被分为-1类,然而超平面1却将它划分为了1类,这显然是不合理的。同样的,超平面3页存在这样的问题,即超平面1和3对于新样本没有很好的泛化能力,而超平面2在这方面显得更优,泛化能力更好,因此我们的直觉是正确的。这便是间隔最大化的作用,之后我们会介绍到底什么是间隔最大化

要介绍间隔最大化,我们首先需要介绍什么是间隔,间隔分为函数间隔几何间隔

  1. 函数间隔

观察下图中的A,B,C三个样本点,

通常,我们可以依据样本点距离分类超平面的距离远近来衡量其分类的确信程度,距离分类超平面越远我们往往认为其分类确信度越高,距离超平面越近,往往我们认为分类确信程度越低,因此在A,B,C三个样本点中,虽然我们都将其分到了1类里,但是我们比较确信样本点C的预测结果是正确的,其次是B样本点,最后我们最不确信的是A样本点。

在中学时期,我们就已经学过点到直线(平面)的距离公式为\frac{\left | w \cdot x + b \right |}{\left \| w \right \|},当我们给定某条直线或平面时,点到其距离可以相对的表示为\left | w \cdot x + b \right |。由于我们规定分类超平面右侧的样本点为1类,左侧样本点为-1类,因此,y_i(w\cdot x_i + b)可以表示分类是否正确(大于0表示分类正确),以及分类的确信度,实际上这就是平面wx+b=0关于点(x_i, y_i)函数间隔,我们记做\widehat{\gamma_i}。而平面关于训练数据集T中的所有样本点的函数间隔的最小值就是平面关于训练数据集的函数间隔,记做\gamma_i,综上我们可以总结得到:

\widehat{\gamma_i}=y_i(wx_i+b)

\gamma_i = \underset{i=1, ..., N}{min}\widehat{\gamma_i}

但是不难发现,\widehat{\gamma_i}=y_i(2wx_i+2b)是平面2wx+2b=0对于样本点(x_i, y_i)的函数间隔,而2wx+2b=0实质上就是平面wx+b=0,也就是说,随着wb均扩大相同的倍数,平面没有变,而平面对于所有样本点的函数间隔均扩大了相同的倍数。那么我们如何解决这样的问题呢,由此我们便引入了几何间隔的概念,平面wx+b=0关于样本点(x_i, y_i)的几何间隔为y_i(\frac{w}{\left \| w \right \|}\cdot x_i+\frac{b}{\left \| w \right \|}),记做\gamma_i,平面对于训练集T中的所有样本点的几何间隔的最小值为平面对于训练数据集的几何间隔,记做\gamma。不难发现,不论我们将wb同时扩大多少倍,平面对于样本点(x_i, y_i)的几何间隔总是不变的。\left \| w \right \|w的二范数,综上可以得到:

\gamma_i=y_i(\frac{w}{\left \| w \right \|}\cdot x_i+\frac{b}{\left \| w \right \|})

\gamma =\underset{i=1,...,N}{min}\gamma_i

总和对比函数间隔和几何间隔,我们可以得出它们两者之间的关系,如下所示:

\gamma_i=\frac{\widehat{\gamma_i}}{\left \| w \right \|}

\gamma=\frac{\widehat{\gamma}}{\left \| w \right \|}

同时我们也可以发现,当超平面对样本点分类正确时几何间隔就是样本点到分类超平面的距离,分类错误的话就是距离的相反数。

在介绍完函数间隔和几何间隔之后,接下来我们需要做的就是,从无数个能够将线性可分数据集正确分类的超平面中找出最好的那一个,如何才能够达成这一目标呢?我们采取的策略叫做间隔最大化的一种策略。还记得之前三幅图中第一幅图,我们凭借直觉选择了超平面2为最优超平面,没错,我们的直觉正是遵从了间隔最大化这样一种策略,只是我们不知道而已,那么接下来我们就来详细介绍这种策略。

间隔最大化使得支持向量机有别于感知机,使得支持向量机的分类效果要优于感知机。间隔最大化实质上就是从所有能够将线性可分数据集正确分类的超平面中,选择对于训练集的几何间隔最大的那么一个超平面作为最优超平面。这样做有什么意义呢,实质上,我们这样做是使得超平面不仅将数据集正确分类,并且能够在正确分类的基础上使得分类正确的确信度足够的大。这样的超平面对于新样本的预测能力,也就是泛化能力要更强。

将间隔最大化表示为数学语言如下所示:

\underset{w,b}{max}\;\gamma \newline s.t \;y_i\left(\frac{w}{\left \| w \right \|}\cdot x_i +\frac{b}{\left \| w \right \|}\right )\geqslant \gamma\;\;i=1, .., N

N表示所有训练样本个数。这样,我们就得到了一个约束最优化问题,约束条件表示对于每一个超平面,我们需要约束所有样本点的几何间隔均大于这个平面对于训练集的几何间隔。我们的任务就是求解这个约束最优化问题,得到最优的超平面,即得到最优的(w,b)上面的约束最优化问题可以表示为:

\underset{w,b}{max}\;\frac{\widehat{\gamma} }{\left \| w \right \|}\newline s.t \;y_i\left(\frac{w}{\left \| w \right \|}\cdot x_i +\frac{b}{\left \| w \right \|}\right )\geqslant \frac{\widehat{\gamma} }{\left \| w \right \|}\;\;i=1, .., N

化简得到:

\underset{w,b}{max}\;\frac{\widehat{\gamma} }{\left \| w \right \|} \newline s.t \;y_i\left(w\cdot x_i +b\right )\geqslant \widehat{\gamma}\;\;i=1, .., N

现在我们观察下图:

对于某个超平面,我们总能够找出一个正数\lambda,将所有样本点的几何间隔扩大\lambda倍,使得平面对于训练集的几何间隔为1/\left \| w \right \|,此时所有样本点的相对位置并未发生改变,如上图,由原始样本点(蓝色)变为了当前样本点(橙色)。根据函数间隔和几何间隔的关系,我们可以得出,实际上就是扩大\lambda后,使得平面对于训练集的几何间隔变为了1,即\widehat{\gamma}=1,而这样的变化并不会影响上述约束最优化问题的解,因此,在上述约束最优化问题中,我们对于目标函数分子分母同时乘以\lambda,对于约束条件左右两端同时乘以\lambda,这样约束最优化问题实质上并没有发生变化,但是上述最优化问题就表示为了:

\underset{w,b}{max}\;\frac{1 }{\left \| \lambda w \right \|} \newline s.t \;y_i\left(\lambda w\cdot x_i +\lambda b\right )\geqslant 1\;\;i=1, .., N

此处,我们令w^{'}=\lambda w, b^{'}=\lambda b,可以将上述约束最优化问题转化为:

\underset{w,b}{max}\;\frac{1 }{\left \| w^{'} \right \|} \newline s.t \;y_i\left(w^{'}\cdot x_i +b^{'}\right )\geqslant 1\;\;i=1, .., N

又由于w^{'}w的线性函数,因此上述问题又可以转化为求解以下问题(可以类比我们求f(x)=x在某区间[a,b]的极小值点等价于求m(x) = 2x在这个区间的极小值点,同时又等价于n(l)=l其中l=2x[2a,2b]上的极小值点在除以2的值):

\underset{w^{'},b^{'}}{max}\;\frac{1 }{\left \| w^{'} \right \|} \newline s.t \;y_i\left(w^{'}\cdot x_i +b^{'}\right )\geqslant 1\;\;i=1, .., N

当我们求出了w^{'}b^{'}的最优解实质上也就求出了所要求的超平面,因为:

w^{'}x+b^{'}=0\Leftrightarrow \lambda wx+\lambda b=0\Leftrightarrow wx+b=0

由于使得1/\left \| w^{'} \right \|最大与使得\frac{1}{2}\left \| w^{'} \right \|^2最小等价,因此上述约束最优化问题最终表示为:

\underset{w^{'},b^{'}}{max}\;\frac{1}{2}\left \| w^{'} \right \|^2 \newline s.t \;y_i\left(w^{'}\cdot x_i +b^{'}\right )\geqslant 1\;\;i=1, .., N

求解上述约束最优化问题,我们便得到了最优超平面w^*\cdot x+b^*=0,此时线性可分支持向量机模型最终为:

f(x)=sign(w^*\cdot x+b^*)

当我们有一个新的样本x_i时,我们将其输入到模型中,如果f(x_i)>0,则我们预测y_i=1,否则y_i=-1

到这里线性可分支持向量机的基本原理已经介绍完毕,接下来需要介绍的就是如何求解这样一个约束最优化问题。

在这之前,我们先介绍两个概念,支持向量以及间隔边界

说了这么长时间的支持向量机,那到底什么是支持向量呢?其实也很简单,即令上述约束最优化问题的约束条件等号成立的样本点我们就称之为支持向量,也就是距离分类超平面最近的样本点。其实上述约束最优化问题的约束条件就是要保证平面对于所有样本点几何间隔都至少是平面对于训练集的集合间隔,所以当某个样本点使得等号成立的时候也就是平面对于这个样本点的几何间隔正好等于平面对于训练集的几何间隔,那么这个样本点就是支持向量。

可见:样本标记为1的支持向量落在了平面w^{'}\cdot x_i +b^{'}=1上,而样本标记为-1的支持向量落在了平面w^{'}\cdot x_i +b^{'}=-1上(因为这两个平面上的点均能使得上述约束最优化问题的等号成立)。我们将样本标记为1的支持向量所在的那个平面记做H_1,样本标记为-1的支持向量所在平面记做H_2,根据几何知识不难得出,这两个平面间的距离为\frac{2}{\left \| w^{'} \right \|},我们称之为间隔(margin),而H_1H_2叫做间隔边界

通过下图可以更好的理解这两个概念:

图中黄色点就是支持向量。

接下来我们就继续求解上述约束最优化问题。

可以看到,求解这么一个约束最优化问题是不容易的,我们将上述问题称为原问题,当原问题很难求解时我们往往需要通过求解其对偶问题的最优解,同时再通过一些定理,来求得原问题的最优解(在这里,如果对于对偶理论一点都不了解的话可以去找一本运筹学相关教材作为参考),为了书写方便,之前的w^{'}b^{'}在之后任然记做wb。首先,上述问题是一个约束极值问题,我们需要使用拉格朗日乘子法来进行求解,第一步我们需要求得拉格朗日函数。设\alpha_i\geq 0\;\;i=1, ..., N为拉格朗日乘子,则拉格朗日函数为:

L(w, b, \alpha) = \frac{1}{2}\left \| w \right \|^2-\sum_{i=1}^{N}\alpha_i(y_i(wx_i+b)-1)\newline=\frac{1}{2}\left \| w \right \|^2-\sum_{i=1}^{N}\alpha_iy_i(wx_i+b) + \sum_{i=1}^{N}\alpha_i

实际上\underset{w,b}{min}\;\underset{\alpha, \alpha_i\geq 0}{max}\;L(w, b, \alpha)就等价于我们的原问题,为什么呢?在我们原问题的约束条件中要求y_i(wx_i+b)-1\geq 0,那么假设有一个样本点不满足这个约束,即存在样本点使得y_i(wx_i+b)-1< 0,那么针对\underset{\alpha, \alpha_i\geq 0}{max}\;L(w, b, \alpha)这个问题,我们只需使的不满足约束条件的那个样本点所对应的拉格朗日乘子为+\infty即可,因此我们要使得\underset{\alpha, \alpha_i\geq 0}{max}\;L(w, b, \alpha)最小,即求解\underset{w,b}{min}\;\underset{\alpha, \alpha_i\geq 0}{max}\;L(w, b, \alpha),我们就不可能使\underset{\alpha, \alpha_i\geq 0}{max}\;L(w, b, \alpha)+\infty,即我们会尽量使的样本点都满足约束条件,当样本点满足约束条件时我们为了保证\underset{\alpha, \alpha_i\geq 0}{max}\;L(w, b, \alpha)能够求得最大的L(w, b, \alpha),我们会使得所有\alpha_i=0(因为此时所有的样本点均满足y_i(wx_i+b)-1\geq 0),此时我们给出以下式子:

\underset{\alpha, \alpha_i\geq 0}{max}\;L(w, b, \alpha)=\left\{\begin{matrix} \frac{1}{2}\left \| w \right \|^2\quad y_i(wx_i+b)-1\geq 0 \;for\;all\;sample\\ +\infty \quad else \end{matrix}\right.

因此:

\underset{w,b}{min}\;\underset{\alpha, \alpha_i\geq 0}{max}\;L(w, b, \alpha)\Leftrightarrow \left\{\begin{matrix} \underset{w,b}{min}\;\frac{1}{2}\left \| w \right \|^2\\ s.t \quad y_i(wx_i +b)-1\geq 0\;\;i=1,...,N \end{matrix}\right.

在这里我们将\underset{w,b}{min}\;\underset{\alpha, \alpha_i\geq 0}{max}\;L(w, b, \alpha)称为原问题,以下是它的对偶问题:

\underset{\alpha, \alpha_i\geq 0}{max}\;\underset{w,b}{min};L(w, b, \alpha)

这样,我们就得到了对偶问题,接下来就是要对对偶问题进行求解,从而求得原问题的最优解。

首先对于对偶问题,我们需要先求解\underset{w,b}{min};L(w, b, \alpha)这一部分,,其实就是一个多元函数极值问题,求解思路也很简单,就是分别求偏导,令其为0建立方程组,求解方程组即可,如下,我们可以建立方程组:

\left\{\begin{matrix} \nabla_wL(w,b,\alpha)=w-\sum_{i=1}^{N}\alpha_iy_ix_i=0\\ -\sum_{i=1}^{N}\alpha_iy_i=0 \end{matrix}\right.

可以解得:

\left\{\begin{matrix}w=\sum_{i=1}^{N}\alpha_iy_ix_i\\ \sum_{i=1}^{N}\alpha_iy_i=0 \end{matrix}\right.

将结果带入到拉格朗日函数中取得到\underset{w,b}{min};L(w, b, \alpha)的结果如下:

\underset{w,b}{min};L(w, b, \alpha)=-\frac{1}{2}\sum_{i=1}^{N}\sum_{i=1}^{N}\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)+\sum_{i=1}^{N}\alpha_i

于是,对偶问题就可以写为:

\left\{\begin{matrix} \underset{\alpha}{max}\;-\frac{1}{2}\sum_{i=1}^{N}\sum_{i=1}^{N}\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)+\sum_{i=1}^{N}\alpha_i\\ s.t.\;\;\sum_{i=1}^{N}\alpha_iy_i=0\\ \alpha_i\geq 0\;\;i=1,...,N \end{matrix}\right.

现在,我们假设对偶问题最优解为\alpha^*=(\alpha_1^*, \alpha_2^*, ..., \alpha_N^*),原问题最优解为w^*,b^*,那么原问题最优解和对偶问题最优解应该满足一下关系:

\left\{\begin{matrix} \nabla_wL(w^*,b^*,\alpha^*)=w-\sum_{i=1}^{N}\alpha_iy_ix_i=0\\ \nabla_bL(w^*,b^*,\alpha^*)=-\sum_{i=1}^{N}\alpha_iy_i=0 \\ \alpha_i^*(y_i(w^*x_i+b^*)-1)=0,\;i=1,...,N\\ y_i(w^*xi+b^*)-1\geq 0,\;i=1,...,N\\ \alpha_i^*\geq 0,\;i=1,...,N \end{matrix}\right.

前两个式子和后两个式子都好理解(前两个式子可以理解为最优点一定在梯度为0的地方,后两个式子为约束条件也好理解),那么中间那个式子怎么理解呢,实际上这是对偶理论当中的一个定理,叫做互补松弛定理,在这里就不做过多的介绍了,有兴趣的同学可以参考运筹学书籍的对偶理论章节。根据以上方程组可以求得:

w^*=\sum_{i=1}^{N}\alpha_i^*y_ix_i

之后我们找出一个\alpha_j^*> 0,则根据以上方程组中中间的那个式子可以得到:

y_j(w^*x_j+b^*)-1=0

在将w^*带入上式便求得了:

b^*=y_j-\sum_{i=1}^{N}\alpha_i^*y_i(x_i\cdot x_j)

这里在求解过程中使用了一个小技巧就是将1替换为了y_j^2,我们知道y_j要么为1,要么为-1,所以可以进行替换。

最后我们再从另一个角度给出支持向量的定义:

由这个式子\alpha_i^*(y_i(w^*x_i+b^*)-1)=0(互补松弛定理)可知,对于对偶问题最优解中的所有非零分量\alpha_i^*> 0对应的样本点均满足y_i(w^*x_i+b^*)-1=0,因此,对偶问题最优解中的所有非零分量\alpha_i^*> 0对应的样本点都是支持向量。

得出这个结论之后我们再看w^*的求解公式,会发现,由于非支持向量对应的\alpha_j均为0,所以w^*只由支持向量决定,非支持向量样本点并不会影响最优超平面的求解。所以支持向量才是决定原问题最优解(最优分类超平面)的关键,而其他样本点实质上并没有起到作用。

到这里,线性可分支持向量机的基本原理及推导已经介绍完毕了,希望能够帮助到正在学习支持向量机的同学,有不足的地方也请同学们不吝赐教。下一篇博客将介绍线性支持向量机,最后一篇博客我们介绍非线性支持向量机。

猜你喜欢

转载自blog.csdn.net/yy2050645/article/details/81674885