支持向量机原理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了支持向量机原理相关的知识,希望对你有一定的参考价值。

参考技术A 支持向量机原理SVM简介
支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;SVM还包括核技巧,这使它成为实质上的非线性分类器。SVM的的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。SVM的的学习算法就是求解凸二次规划的最优化算法。

SVM算法原理
SVM学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。如下图所示, \boldsymbolw\cdot x+b=0 即为分离超平面,对于线性可分的数据集来说,这样的超平面有无穷多个(即感知机),但是几何间隔最大的分离超平面却是唯一的。

在推导之前,先给出一些定义。假设给定一个特征空间上的训练数据集

T=\left\ \left( \boldsymbolx_1,y_1 \right) ,\left( \boldsymbolx_2,y_2 \right) ,...,\left( \boldsymbolx_N,y_N \right) \right\

其中, \boldsymbolx_i\in \mathbbR^n , y_i\in \left\ +1,-1 \right\ ,i=1,2,...N , x_i 为第 i 个特征向量, y_i 为类标记,当它等于+1时为正例;为-1时为负例。再假设训练数据集是线性可分的。

几何间隔:对于给定的数据集 T 和超平面 w\cdot x+b=0 ,定义超平面关于样本点 \left( x_i,y_i \right) 的几何间隔为

\gamma _i=y_i\left( \frac\boldsymbolw\lVert \boldsymbolw \rVert\cdot \boldsymbolx_\boldsymboli+\fracb\lVert \boldsymbolw \rVert \right)

超平面关于所有样本点的几何间隔的最小值为

\gamma =\underseti=1,2...,N\min\gamma _i

实际上这个距离就是我们所谓的支持向量到超平面的距离。

根据以上定义,SVM模型的求解最大分割超平面问题可以表示为以下约束最优化问题

\underset\boldsymbolw,b\max\ \gamma

s.t.\ \ \ y_i\left( \frac\boldsymbolw\lVert \boldsymbolw \rVert\cdot \boldsymbolx_\boldsymboli+\fracb\lVert \boldsymbolw \rVert \right) \ge \gamma \ ,i=1,2,...,N

将约束条件两边同时除以 \gamma ,得到

y_i\left( \frac\boldsymbolw\lVert \boldsymbolw \rVert \gamma\cdot \boldsymbolx_\boldsymboli+\fracb\lVert \boldsymbolw \rVert \gamma \right) \ge 1

因为 \lVert \boldsymbolw \rVert \text,\gamma 都是标量,所以为了表达式简洁起见,令

\boldsymbolw=\frac\boldsymbolw\lVert \boldsymbolw \rVert \gamma

b=\fracb\lVert \boldsymbolw \rVert \gamma

得到

y_i\left( \boldsymbolw\cdot \boldsymbolx_\boldsymboli+b \right) \ge 1,\ i=1,2,...,N

又因为最大化 \gamma ,等价于最大化 \frac1\lVert \boldsymbolw \rVert ,也就等价于最小化 \frac12\lVert \boldsymbolw \rVert ^2 ( \frac12 是为了后面求导以后形式简洁,不影响结果),因此SVM模型的求解最大分割超平面问题又可以表示为以下约束最优化问题

\underset\boldsymbolw,b\min\ \frac12\lVert \boldsymbolw \rVert ^2

s.t.\ \ y_i\left( \boldsymbolw\cdot \boldsymbolx_\boldsymboli+b \right) \ge 1,\ i=1,2,...,N

这是一个含有不等式约束的凸二次规划问题,可以对其使用拉格朗日乘子法得到其对偶问题(dual problem)。

首先,我们将有约束的原始目标函数转换为无约束的新构造的拉格朗日目标函数

L\left( \boldsymbolw,b,\boldsymbol\alpha \right) =\frac12\lVert \boldsymbolw \rVert ^2-\sum_i=1^N\alpha _i\left( y_i\left( \boldsymbolw\cdot \boldsymbolx_\boldsymboli+b \right) -1 \right)

其中 \alpha _i 为拉格朗日乘子,且 \alpha _i\ge 0 。现在我们令

\theta \left( \boldsymbolw \right) =\underset\alpha __i\ge 0\max\ L\left( \boldsymbolw,b,\boldsymbol\alpha \right)

当样本点不满足约束条件时,即在可行解区域外:

y_i\left( \boldsymbolw\cdot \boldsymbolx_\boldsymboli+b \right) <1

此时,将 \alpha _i 设置为无穷大,则 \theta \left( \boldsymbolw \right) 也为无穷大。

当满本点满足约束条件时,即在可行解区域内:

y_i\left( \boldsymbolw\cdot \boldsymbolx_\boldsymboli+b \right) \ge 1

此时, \theta \left( \boldsymbolw \right) 为原函数本身。于是,将两种情况合并起来就可以得到我们新的目标函数

\theta \left( \boldsymbolw \right) =\begincases \frac12\lVert \boldsymbolw \rVert ^2\ ,\boldsymbolx\in \text可行区域\\ +\infty \ \ \ \ \ ,\boldsymbolx\in \text不可行区域\\ \endcases

于是原约束问题就等价于

\underset\boldsymbolw,b\min\ \theta \left( \boldsymbolw \right) =\underset\boldsymbolw,b\min\underset\alpha _i\ge 0\max\ L\left( \boldsymbolw,b,\boldsymbol\alpha \right) =p^*

看一下我们的新目标函数,先求最大值,再求最小值。这样的话,我们首先就要面对带有需要求解的参数 \boldsymbolw 和 b 的方程,而 \alpha _i 又是不等式约束,这个求解过程不好做。所以,我们需要使用拉格朗日函数对偶性,将最小和最大的位置交换一下,这样就变成了:

\underset\alpha _i\ge 0\max\underset\boldsymbolw,b\min\ L\left( \boldsymbolw,b,\boldsymbol\alpha \right) =d^*

要有 p^*=d^* ,需要满足两个条件:

① 优化问题是凸优化问题

② 满足KKT条件

首先,本优化问题显然是一个凸优化问题,所以条件一满足,而要满足条件二,即要求

\begincases \alpha _i\ge 0\\ y_i\left( \boldsymbolw_\boldsymboli\cdot \boldsymbolx_\boldsymboli+b \right) -1\ge 0\\ \alpha _i\left( y_i\left( \boldsymbolw_\boldsymboli\cdot \boldsymbolx_\boldsymboli+b \right) -1 \right) =0\\ \endcases

为了得到求解对偶问题的具体形式,令 L\left( \boldsymbolw,b,\boldsymbol\alpha \right) 对 \boldsymbolw 和 b 的偏导为0,可得

\boldsymbolw=\sum_i=1^N\alpha _iy_i\boldsymbolx_\boldsymboli

\sum_i=1^N\alpha _iy_i=0

将以上两个等式带入拉格朗日目标函数,消去 \boldsymbolw 和 b , 得

L\left( \boldsymbolw,b,\boldsymbol\alpha \right) =\frac12\sum_i=1^N\sum_j=1^N\alpha _i\alpha _jy_iy_j\left( \boldsymbolx_\boldsymboli\cdot \boldsymbolx_\boldsymbolj \right)-\sum_i=1^N\alpha _iy_i\left( \left( \sum_j=1^N\alpha _jy_j\boldsymbolx_\boldsymbolj \right) \cdot \boldsymbolx_\boldsymboli+b \right) +\sum_i=1^N\alpha _i

\ \ \ \ \ \ \ \ \ \ \ =-\frac12\sum_i=1^N\sum_j=1^N\alpha _i\alpha _jy_iy_j\left( \boldsymbolx_\boldsymboli\cdot \boldsymbolx_\boldsymbolj \right)+\sum_i=1^N\alpha _i


\underset\boldsymbolw,b\min\ L\left( \boldsymbolw,b,\boldsymbol\alpha \right) =-\frac12\sum_i=1^N\sum_j=1^N\alpha _i\al

支持向量机原理 线性支持向量机

   支持向量机原理(一) 线性支持向量机

    支持向量机原理(二) 线性支持向量机的软间隔最大化模型

    支持向量机原理(三)线性不可分支持向量机与核函数

    支持向量机原理(四)SMO算法原理

    支持向量机原理(五)线性支持回归

    支持向量机(Support Vecor Machine,以下简称SVM)虽然诞生只有短短的二十多年,但是自一诞生便由于它良好的分类性能席卷了机器学习领域,并牢牢压制了神经网络领域好多年。如果不考虑集成学习的算法,不考虑特定的训练数据集,在分类算法中的表现SVM说是排第一估计是没有什么异议的。

    SVM是一个二元分类算法,线性分类和非线性分类都支持。经过演进,现在也可以支持多元分类,同时经过扩展,也能应用于回归问题。本系列文章就对SVM的原理做一个总结。本篇的重点是SVM用于线性分类时模型和损失函数优化的一个总结。

1. 回顾感知机模型

    在感知机原理小结中,我们讲到了感知机的分类原理,感知机的模型就是尝试找到一条直线,能够把二元数据隔离开。放到三维空间或者更高维的空间,感知机的模型就是尝试找到一个超平面,能够把所有的二元类别隔离开。对于这个分离的超平面,我们定义为wTx+b=0,如下图。在超平面wTx+b=0上方的我们定义为y=1,在超平面wTx+b=0下方的我们定义为y=−1。可以看出满足这个条件的超平面并不止一个。那么我们可能会尝试思考,这么多的可以分类的超平面,哪个是最好的呢?或者说哪个是泛化能力最强的呢?

 

    接着我们看感知机模型的损失函数优化,它的思想是让所有误分类的点(定义为M)到超平面的距离和最小,即最小化下式:

∑xi∈M−y(i)(wTx(i)+b)/||w||2

 

    当w和b成比例的增加,比如,当分子的w和b扩大N倍时,分母的L2范数也会扩大N倍。也就是说,分子和分母有固定的倍数关系。那么我们可以固定分子或者分母为1,然后求另一个即分子自己或者分母的倒数的最小化作为损失函数,这样可以简化我们的损失函数。在感知机模型中,我们采用的是保留分子,固定分母||w||2=1,即最终感知机模型的损失函数为:

∑xi∈M−y(i)(wTx(i)+b)

 

    如果我们不是固定分母,改为固定分子,作为分类模型有没有改进呢?

    这些问题在我们引入SVM后会详细解释。

2. 函数间隔与几何间隔

    在正式介绍SVM的模型和损失函数之前,我们还需要先了解下函数间隔和几何间隔的知识。

    在分离超平面固定为wTx+b=0的时候,|wTx+b|表示点x到超平面的距离。通过观察wTx+b和y是否同号,我们判断分类是否正确,这些知识我们在感知机模型里都有讲到。这里我们引入函数间隔的概念,定义函数间隔γ′为:

γ′=y(wTx+b)

 

    可以看到,它就是感知机模型里面的误分类点到超平面距离的分子。对于训练集中m个样本点对应的m个函数间隔的最小值,就是整个训练集的函数间隔。

    函数间隔并不能正常反应点到超平面的距离,在感知机模型里我们也提到,当分子成比例的增长时,分母也是成倍增长。为了统一度量,我们需要对法向量w加上约束条件,这样我们就得到了几何间隔γ,定义为:

γ=y(wTx+b)||w||2=γ′||w||2

 

    几何间隔才是点到超平面的真正距离,感知机模型里用到的距离就是几何距离。

3. 支持向量

    在感知机模型中,我们可以找到多个可以分类的超平面将数据分开,并且优化时希望所有的点都离超平面远。但是实际上离超平面很远的点已经被正确分类,我们让它离超平面更远并没有意义。反而我们最关心是那些离超平面很近的点,这些点很容易被误分类。如果我们可以让离超平面比较近的点尽可能的远离超平面,那么我们的分类效果会好有一些。SVM的思想起源正起于此。

    如下图所示,分离超平面为wTx+b=0,如果所有的样本不光可以被超平面分开,还和超平面保持一定的函数距离(下图函数距离为1),那么这样的分类超平面是比感知机的分类超平面优的。可以证明,这样的超平面只有一个。和超平面平行的保持一定的函数距离的这两个超平面对应的向量,我们定义为支持向量,如下图虚线所示。

    

     支持向量到超平面的距离为1/||w||2,两个支持向量之间的距离为2/||w||2。

4. SVM模型目标函数与优化

    SVM的模型是让所有点到超平面的距离大于一定的距离,也就是所有的分类点要在各自类别的支持向量两边。用数学式子表示为: