转载自 https://zhuanlan.zhihu.com/p/49331510

定义

Support Vector Machine,简称SVM,支持向量机,是一种二类分类模型,基本模型是定义在特征空间上的间隔最大的线性分类器。SVM的学习策略就是间隔最大化。


直观理解

图中有分别属于两类的一些二维数据点和三条直线。如果三条直线分别代表三个分类器的话,请问哪一个分类器比较好?机器学习——SVM

我们凭直观感受应该觉得答案是H3。

首先H1不能把类别分开,这个分类器肯定是不行的

H2可以把类别分开,但分割线与最近的数据点只有很小的间隔,如果测试数据有一些噪声的话可能就会被H2错误分类(即对噪声敏感、泛化能力弱)。

H3以较大间隔将它们分开,这样就能容忍测试数据的一些噪声而正确分类,是一个泛化能力不错的分类器。

对于支持向量机来说,数据点若是机器学习——SVM维向量,我们用机器学习——SVM维的超平面来分开这些点。但是可能有许多超平面可以把数据分类。最佳超平面的一个合理选择就是以最大间隔把两个类分开的超平面。

因此,SVM选择能够 使离超平面最近的数据点 到超平面 距离最大 的超平面。

以上介绍的SVM只能解决线性可分的问题,为了解决更加复杂的问题,支持向量机学习方法有一些由简至繁的模型:

(1)线性可分SVM

(2)线性SVM

(3)非线性SVM


线性可分SVM

考虑如下形式的线性可分的训练数据集:

机器学习——SVM

其中机器学习——SVM是一个含有机器学习——SVM个元素的列向量, 即机器学习——SVM;机器学习——SVM是标量,机器学习——SVM,机器学习——SVM时表示机器学习——SVM属于正类别,机器学习——SVM是表示机器学习——SVM属于负类别。

回忆一下感知机的目标: 找到一个超平面使其能正确地将每个样本正确分类。感知机使用误分类最小的方法求得超平面,不过此时解有无穷多个(例如图1.1的H2和H3以及它俩的任意线性组合)。而线性可分支持向量机利用间隔最大化求最优分离超平面,这时解是唯一的。


超平面与间隔

一个超平面由法向量机器学习——SVM和截距机器学习——SVM决定,其方程为机器学习——SVM, 可以规定法向量指向的一侧为正类,另一侧为负类。下图画出了三个平行的超平面,法方向取左上方向。

注意: 如果机器学习——SVM机器学习——SVM都是列向量,即机器学习——SVM会得到机器学习——SVM机器学习——SVM的点积(dot product, 是一个标量),等价于机器学习——SVM机器学习——SVM

机器学习——SVM

为了找到最大间隔超平面,我们可以先选择分离两类数据的两个平行超平面,使得它们之间的距离尽可能大。在这两个超平面范围内的区域称为“间隔(margin)”,最大间隔超平面是位于它们正中间的超平面。这个过程如上图所示。


间隔最大化

将高数里面求两条平行直线的距离公式推广到高维可求得图2.1中margin的机器学习——SVM:机器学习——SVM

我们的目标是使机器学习——SVM最大, 等价于使机器学习——SVM最大:机器学习——SVM

上式的机器学习——SVM是为了后续求导后刚好能消去,没有其他特殊意义。

同时也不要忘了有一些约束条件:机器学习——SVM

总结一下,间隔最大化问题的数学表达就是机器学习——SVM

通过求解上式即可得到最优超平面机器学习——SVM机器学习——SVM。具体如何求解见2.4和2.5节。


支持向量

在线性可分的情况下,训练数据集的样本点中与分离超平面距离最近的数据点称为支持向量(support vector),支持向量是使机器学习——SVM中的约束条件取等的点,即满足机器学习——SVM

的点。也即所有在直线机器学习——SVM或直线机器学习——SVM的点。如下图所示:

机器学习——SVM

在决定最佳超平面时只有支持向量起作用,而其他数据点并不起作用(具体推导见2.4节最后)。如果移动非支持向量,甚至删除非支持向量都不会对最优超平面产生任何影响。也即支持向量对模型起着决定性的作用,这也是“支持向量机”名称的由来。


对偶问题

如何求解式机器学习——SVM呢?

我们称式机器学习——SVM所述问题为原始问题(primal problem), 可以应用拉格朗日乘子法构造拉格朗日函数(Lagrange function)再通过求解其对偶问题(dual problem)得到原始问题的最优解。转换为对偶问题来求解的原因是:

  • 对偶问题更易求解,由下文知对偶问题只需优化一个变量机器学习——SVM且约束条件更简单;
  • 能更加自然地引入核函数,进而推广到非线性问

首先构建拉格朗日函数。为此需要引进拉格朗日乘子(Lagrange multiplier)机器学习——SVM。则拉格朗日函数为:

机器学习——SVM

因此,给定一个机器学习——SVM机器学习——SVM, 若不满足式机器学习——SVM的约束条件,那么有机器学习——SVM

否则,若满足式机器学习——SVM的约束条件,有机器学习——SVM

结合式机器学习——SVM机器学习——SVM知,优化问题机器学习——SVM

与式机器学习——SVM所述问题是完全等价的。

根据拉格朗日对偶性,式机器学习——SVM所述问题即原始问题的对偶问题是:机器学习——SVM

以上具体推导细节可参见书籍《统计学习方法》或者知乎文章拉格朗日对偶性

为了求得对偶问题的解,需要先求得机器学习——SVM机器学习——SVM机器学习——SVM的极小再求对机器学习——SVM的极大。

(1) 求机器学习——SVM: 对拉格朗日函数求导并令导数为0,有:机器学习——SVM机器学习——SVM

将上面两式代入机器学习——SVM

机器学习——SVM

所以,

机器学习——SVM


看到这里——记录


(2) 求机器学习——SVM机器学习——SVM的极大:

等价于式机器学习——SVM机器学习——SVM求极大,也等价于式机器学习——SVM取负数后对机器学习——SVM求极小,即机器学习——SVM

同时满足约束条件:机器学习——SVM

至此,我们得到了原始最优化问题机器学习——SVM和对偶最优化问题机器学习——SVM机器学习——SVM

由slater条件知,因为原始优化问题的目标函数和不等式约束条件都是凸函数,并且该不等式约束是严格可行的(因为数据是线性可分的), 所以存在机器学习——SVM,机器学习——SVM,机器学习——SVM,使得机器学习——SVM,机器学习——SVM是原始问题的解,机器学习——SVM是对偶问题的解。这意味着求解原始最优化问题机器学习——SVM可以转换为求解对偶最优化问题机器学习——SVM机器学习——SVM

slater 条件: 原始问题一般性表达为机器学习——SVM
则其拉格朗日函数为
机器学习——SVM
假设原始问题目标函数机器学习——SVM和不等式约束条件机器学习——SVM都是凸函数,原始问题等式约束机器学习——SVM都是仿射函数,且不等式约束机器学习——SVM是严格可行的,即存在机器学习——SVM,对所有机器学习——SVM都有机器学习——SVM,则存在机器学习——SVM,机器学习——SVM,机器学习——SVM,使机器学习——SVM是原始问题的解,机器学习——SVM,机器学习——SVM是对偶问题的解。

那么如何求解优化问题机器学习——SVM机器学习——SVM的最优解机器学习——SVM呢? 不难发现这是一个二次规划问题,有现成的通用的算法来求解。

事实上通用的求解二次规划问题的算法的复杂度正比于训练数据样本数,所以在实际应用中需要寻求更加高效的算法,例如序列最小优化(Sequential Minimal Optimiation, SMO)算法。

假设我们现在求得了机器学习——SVM机器学习——SVM的最优解机器学习——SVM,则根据式机器学习——SVM可求得最优机器学习——SVM机器学习——SVM

因为至少存在一个机器学习——SVM(若不存在,即机器学习——SVM全为0,则机器学习——SVM, 即机器学习——SVM,显然不行), 再根据KKT条件,即

机器学习——SVM

所以至少存在一个机器学习——SVM, 使机器学习——SVM, 即可求得最优机器学习——SVM:机器学习——SVM

至此,所以我们就求得了整个线性可分SVM的解。求得的分离超平面为:机器学习——SVM

则分类的决策函数为机器学习——SVM

再来分析KKT条件里的互补条件,对于任意样本机器学习——SVM,总会有机器学习——SVM或者机器学习——SVM。则有机器学习——SVM此样本点不是支持向量,对模型没有任何作用;若机器学习——SVM,此样本点位于最大间隔边界上,是一个支持向量,如下图所示。

机器学习——SVM

图2.3

此外,当样本点是非支持向量时,因为机器学习——SVM, 所以SVM的解中的求和项中第机器学习——SVM项就为0,所以SVM的解机器学习——SVM机器学习——SVM可简化为如下形式:机器学习——SVM机器学习——SVM

类似的,判别函数也可转换成如下形式:机器学习——SVM所以,整个SVM的解只与支持向量SV有关,与非支持向量无关。这也就解释了2.3节的结论,即在决定最佳超平面时只有支持向量起作用,而其他数据点并不起作用。

3. 线性SVM——软间隔

在前面的讨论中,我们一直假定训练数据是严格线性可分的,即存在一个超平面能完全将两类数据分开。但是现实任务这个假设往往不成立,例如下图所示的数据。

机器学习——SVM

图3.1

3.1 软间隔最大化

解决该问题的一个办法是允许SVM在少量样本上出错,即将之前的硬间隔最大化条件放宽一点,为此引入“软间隔(soft margin)”的概念。即允许少量样本不满足约束机器学习——SVM

为了使不满足上述条件的样本点尽可能少,我们需要在优化的目标函数机器学习——SVM里面新增一个对这些点的惩罚项。最常用的是hinge损失:机器学习——SVM

即若样本点满足约束条件损失就是0, 否则损失就是机器学习——SVM,则优化目标机器学习——SVM变成机器学习——SVM

其中机器学习——SVM称为惩罚参数,机器学习——SVM越小时对误分类惩罚越小,越大时对误分类惩罚越大,当机器学习——SVM取正无穷时就变成了硬间隔优化。实际应用时我们要合理选取机器学习——SVM机器学习——SVM越小越容易欠拟合,机器学习——SVM越大越容易过拟合。

如果我们引入“松弛变量”机器学习——SVM, 那么式机器学习——SVM可重写成机器学习——SVM

上式所述问题即软间隔支持向量机。

3.2 对偶问题

机器学习——SVM表示的软间隔支持向量机依然是一个凸二次规划问题,和硬间隔支持向量机类似,我们可以通过拉格朗日乘子法将其转换为对偶问题进行求解。 式机器学习——SVM对应的拉格朗日函数为机器学习——SVM类似2.4节,为了求得对偶问题的解,我们需要先求得机器学习——SVM机器学习——SVM机器学习——SVM机器学习——SVM的极小再求对机器学习——SVM机器学习——SVM的极大。

以下两步和2.4节几乎完全一样,除了最后对机器学习——SVM的约束条件略有不同。

(1) 求机器学习——SVM: 将机器学习——SVM分别对机器学习——SVM机器学习——SVM机器学习——SVM求偏导并令为0可得机器学习——SVM机器学习——SVM机器学习——SVM

将上面三个式子代入式机器学习——SVM并进行类似式机器学习——SVM的推导即得机器学习——SVM

注意其中的机器学习——SVM被消去了。

(2) 求机器学习——SVM机器学习——SVM的极大:

机器学习——SVM机器学习——SVM求极大,也等价于式机器学习——SVM取负数后对机器学习——SVM求极小,即机器学习——SVM

同时满足约束条件:机器学习——SVM

至此,我们得到了原始最优化问题机器学习——SVM和对偶最优化问题机器学习——SVM机器学习——SVM

类似2.4节地,假设我们现在通过通用的二次规划求解方法或者SMO算法求得了机器学习——SVM机器学习——SVM的最优解机器学习——SVM,则根据式机器学习——SVM可求得最优机器学习——SVM机器学习——SVM

再根据KKT条件,即

机器学习——SVM

可求得整个软间隔SVM的解,即:机器学习——SVM机器学习——SVM

其中机器学习——SVM需满足机器学习——SVM

对于任意样本机器学习——SVM机器学习——SVM,此样本点不是支持向量,该样本对模型没有任何的作用;若机器学习——SVM,此样本是一个支持向量。

若满足机器学习——SVM,进一步地,若机器学习——SVM, 由式机器学习——SVM机器学习——SVM,即刚好机器学习——SVM,样本恰好在最大间隔边界上;若机器学习——SVM,有机器学习——SVM,此时若机器学习——SVM则该样本落在最大间隔内部,若机器学习——SVM则该样本落在最大间隔内部即被错误分类。

如下图所示。

机器学习——SVM

图3.2

因此,我们有与2.4节相同的结论,最优超平面只与支持向量有关而与非支持向量无关。

3.3 惩罚参数机器学习——SVM

对于不同惩罚参数机器学习——SVM,SVM结果如下图所示

机器学习——SVM

图 3.3

再来看看我们的原始目标函数:

机器学习——SVM

对于更加一般化的问题,可将上述式子抽象成:机器学习——SVM

前一项可以理解为“结构风险(structural risk)”,用来描述所求模型的某些性质(SVM就是要求间隔最大);第二项称为“经验风险(empirical risk)”,用来描述模型与训练数据的契合程度(即误差)。而参数机器学习——SVM就是用于对二者的折中,即我们一方面要求模型要满足某种性质另一方面又想使模型与训练数据很契合。

从正则化角度来讲,机器学习——SVM称为正则化项,机器学习——SVM称为惩罚参数,机器学习——SVM越大即对误分类的惩罚越大(要求模型对训练模型更契合),这可能会存在过拟合;机器学习——SVM越小即相对更加看重正则化项,此时可能存在欠拟合。

4. 非线性SVM——核技巧

前面介绍的都是线性问题,但是我们经常会遇到非线性的问题(例如异或问题),此时就需要用到核技巧(kernel trick)将线性支持向量机推广到非线性支持向量机。需要注意的是,不仅仅是SVM,很多线性模型都可以用核技巧推广到非线性模型,例如核线性判别分析(KLDA)。

4.1 核函数

如下图所示,核技巧的基本思路分为两步:使用一个变换将原空间的数据映射到新空间(例如更高维甚至无穷维的空间);然后在新空间里用线性方法从训练数据中学习得到模型。

机器学习——SVM

图 4.1

怎样映射到特征空间?

先来看看核函数的定义,

机器学习——SVM是输入空间(欧式空间机器学习——SVM的子集或离散集合),又设机器学习——SVM是特征空间(希尔伯特空间),如果存在一个机器学习——SVM机器学习——SVM的映射机器学习——SVM使得对所有机器学习——SVM,函数机器学习——SVM满足条件机器学习——SVM则称机器学习——SVM为核函数,机器学习——SVM为映射函数,式中机器学习——SVM机器学习——SVM机器学习——SVM的內积。

通常,直接计算机器学习——SVM比较容易而通过机器学习——SVM机器学习——SVM计算机器学习——SVM并不容易。而幸运的是,在线性支持向量机的对偶问题中,无论是目标函数还是决策函数都只涉及到输入样本与样本之间的內积,因此我们不需要显式地定义映射机器学习——SVM是什么而只需事先定义核函数机器学习——SVM即可。也就是说,在核函数机器学习——SVM给定的情况下,可以利用解线性问题的方法求解非线性问题的支持向量机,此过程是隐式地在特征空间中进行的。

4.2 正定核

由上面的介绍可知,我们只需要定义核函数就可以了。但是如何不通过映射机器学习——SVM判断给定的一个函数机器学习——SVM是不是核函数呢?或者说,机器学习——SVM需要满足什么条件才是一个核函数。

通常所说的核函数就是正定核函数,下面不加证明的给出正定核的充要条件,具体证明略显复杂,有兴趣的可以参考《统计学习方法》。

机器学习——SVM,机器学习——SVM是定义在机器学习——SVM上的对称函数,如果对任意的机器学习——SVM机器学习——SVM对应的Gram矩阵机器学习——SVM是半正定矩阵,则机器学习——SVM是正定核。

虽然有了上述定义,但是实际应用时验证机器学习——SVM是否是正定核依然不容易,因此在实际问题中一般使用已有的核函数,下面给出一些常用的核函数。

  • 多项式核函数(polynomial kernel function)机器学习——SVM
  • 高斯核函数(Guassian kernel function)机器学习——SVM

4.3 非线性支持向量机

如前4.1、4.2所述,利用核技巧可以很简单地把线性支持向量机扩展到非线性支持向量机,只需将线性支持向量机中的內积换成核函数即可。下面简述非线性支持向量机学习算法。

  • 首先选取适当的核函数机器学习——SVM和适当的参数机器学习——SVM,构造最优化问题机器学习——SVM
  • 再利用现成的二次规划问题求解算法或者SMO算法求得最优解机器学习——SVM
  • 选择机器学习——SVM的一个满足机器学习——SVM的分量机器学习——SVM,计算机器学习——SVM
  • 构造决策函数:机器学习——SVM

5. 总结

任何算法都有其优缺点,支持向量机也不例外。

支持向量机的优点是:

  1. 由于SVM是一个凸优化问题,所以求得的解一定是全局最优而不是局部最优。
  2. 不仅适用于线性线性问题还适用于非线性问题(用核技巧)。
  3. 拥有高维样本空间的数据也能用SVM,这是因为数据集的复杂度只取决于支持向量而不是数据集的维度,这在某种意义上避免了“维数灾难”。
  4. 理论基础比较完善(例如神经网络就更像一个黑盒子)。

支持向量机的缺点是:

  1. 二次规划问题求解将涉及m阶矩阵的计算(m为样本的个数), 因此SVM不适用于超大数据集。(SMO算法可以缓解这个问题)
  2. 只适用于二分类问题。(SVM的推广SVR也适用于回归问题;可以通过多个SVM的组合来解决多分类问题)

相关文章: