线性支持向量机:一个名字奇怪但思想简单的算法

Posted AI派

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线性支持向量机:一个名字奇怪但思想简单的算法相关的知识,希望对你有一定的参考价值。

本文是《机器学习宝典》第 9 篇,读完本文你能够掌握机器学习中线性支持向量机模型。

在前一篇  中已经知道逻辑回归能够完成二分类,这篇文章介绍另外一个能够实现二分类的模型:支持向量机(support vector machine,SVM)。这个名字会让初学者有很大的困惑,不理解到底什么是所谓的"支持向量"。相信通过这篇文章后,你会明白这个名称的含义。

从逻辑回归到支持向量机

我们已经知道,将一个样本中的各个特征进行线性组合的结果是  ,它的取值范围是 线性支持向量机:一个名字奇怪但思想简单的算法 ,逻辑回归通过 sigmoid 函数 线性支持向量机:一个名字奇怪但思想简单的算法 将线性组合的结果映射到 线性支持向量机:一个名字奇怪但思想简单的算法 ,映射后的结果认为是 线性支持向量机:一个名字奇怪但思想简单的算法 (正样本)的概率。仔细观察下逻辑回归的完整公式: 线性支持向量机:一个名字奇怪但思想简单的算法,我们能够发现,其实 线性支持向量机:一个名字奇怪但思想简单的算法 的结果只是与 线性支持向量机:一个名字奇怪但思想简单的算法  有关,sigmoid 函数 线性支持向量机:一个名字奇怪但思想简单的算法 的作用只是映射,如果 线性支持向量机:一个名字奇怪但思想简单的算法,则 线性支持向量机:一个名字奇怪但思想简单的算法,那么就认为该样本目标 线性支持向量机:一个名字奇怪但思想简单的算法;如果线性支持向量机:一个名字奇怪但思想简单的算法,则线性支持向量机:一个名字奇怪但思想简单的算法,那么就认为该样本目标 线性支持向量机:一个名字奇怪但思想简单的算法

回过头仔细想下,逻辑回归其实是使用全部训练样本去学习参数 线性支持向量机:一个名字奇怪但思想简单的算法,尽可能使得学到的参数 线性支持向量机:一个名字奇怪但思想简单的算法 能够将正样本的特征的线性组合 线性支持向量机:一个名字奇怪但思想简单的算法 大于0,将负样本的特征的线性组合 线性支持向量机:一个名字奇怪但思想简单的算法 小于0。这么做的原因是因为逻辑回归借助了 sigmoid 函数 线性支持向量机:一个名字奇怪但思想简单的算法,这样在它的的眼中,线性支持向量机:一个名字奇怪但思想简单的算法 越大于 0,属于正样本的概率就越高;越小于 0,属于负样本的概率就越高。

进一步,如果我们将标签 线性支持向量机:一个名字奇怪但思想简单的算法 和 线性支持向量机:一个名字奇怪但思想简单的算法 替换成 线性支持向量机:一个名字奇怪但思想简单的算法 和 线性支持向量机:一个名字奇怪但思想简单的算法 ,同时映射函数 线性支持向量机:一个名字奇怪但思想简单的算法 不是 sigmoid 函数,而是下面这个函数:
线性支持向量机:一个名字奇怪但思想简单的算法
那么我们可以认为,只要线性支持向量机:一个名字奇怪但思想简单的算法,标签线性支持向量机:一个名字奇怪但思想简单的算法; 线性支持向量机:一个名字奇怪但思想简单的算法,标签线性支持向量机:一个名字奇怪但思想简单的算法。由于一个超平面可以通过  线性支持向量机:一个名字奇怪但思想简单的算法 来表示,所以可以认为我们找到了一个划分超平面,这个超平面能够将正负样本区分开。为了直观理解,下图是在二维空间中线性可分的情况下超平面划分样本的示意图(二维空间中,超平面会是一条直线)。

线性支持向量机:一个名字奇怪但思想简单的算法

在超平面   线性支持向量机:一个名字奇怪但思想简单的算法 中, 线性支持向量机:一个名字奇怪但思想简单的算法 表示法向量,决定超平面的方向, 线性支持向量机:一个名字奇怪但思想简单的算法 表示位移项,决定超平面与原点之间的距离。也就是说,参数  线性支持向量机:一个名字奇怪但思想简单的算法 和  线性支持向量机:一个名字奇怪但思想简单的算法 共同决定了这个超平面。

这里有个小问题:线性支持向量机:一个名字奇怪但思想简单的算法为什么是超平面的法向量呢?可以这样证明,假设 线性支持向量机:一个名字奇怪但思想简单的算法 是该超平面上的两个点,则向量线性支持向量机:一个名字奇怪但思想简单的算法和向量线性支持向量机:一个名字奇怪但思想简单的算法 的点积为:

线性支持向量机:一个名字奇怪但思想简单的算法

则 线性支持向量机:一个名字奇怪但思想简单的算法 ,由于 线性支持向量机:一个名字奇怪但思想简单的算法,所以  线性支持向量机:一个名字奇怪但思想简单的算法 。

支持向量机其实要做的就是找到这样一个划分超平面 线性支持向量机:一个名字奇怪但思想简单的算法,能够在特征空间将两类样本分开,并且该超平面距离各样本最远。此外,相比于距离超平面较远的一些样本,我们更关心距离超平面较近的一些样本是否能被正确划分,这些距离焦平面较近的样本就是支持向量。也就是说,支持向量机只是使用少量的训练样本(支持向量)来学习超平面参数 线性支持向量机:一个名字奇怪但思想简单的算法 和 线性支持向量机:一个名字奇怪但思想简单的算法 。这是支持向量机与逻辑回归不一样的一个地方,因为逻辑回归是使用全部的训练样本学习参数 线性支持向量机:一个名字奇怪但思想简单的算法 和 线性支持向量机:一个名字奇怪但思想简单的算法 。可以看出,支持向量机的思想是非常简单的。

函数间隔与几何间隔

我们已经知道,支持向量机要找的超平面需要在特征空间中距离各样本最远,那如何衡量远近呢?我们可以使用间隔来衡量。说到间隔,存在函数间隔与几何间隔两种。

我们先来说下函数间隔,当我们的超平面 线性支持向量机:一个名字奇怪但思想简单的算法 确定后,我们定义一个样本的函数间隔为:
线性支持向量机:一个名字奇怪但思想简单的算法
想一想,函数间隔 线性支持向量机:一个名字奇怪但思想简单的算法 有什么含义呢?其实我们可以通过它的正负性来判断分类是否正确。线性支持向量机:一个名字奇怪但思想简单的算法 如果大于等于 0 的话,说明分类正确;反之分类错误。

如果特征空间线性可分,一定存在一个超平面将样本完全分类正确,那么这时候函数间隔 线性支持向量机:一个名字奇怪但思想简单的算法 一定是大于等于 0 的。
线性支持向量机:一个名字奇怪但思想简单的算法
得到了一个样本的函数间隔,现在定义下在训练数据上的函数间隔:
线性支持向量机:一个名字奇怪但思想简单的算法
也就是说训练数据上的函数间隔就是训练数据中最小的一个训练样本的函数间隔。

不过函数间隔有这样一个问题:如果等比例的改变参数 线性支持向量机:一个名字奇怪但思想简单的算法 和 线性支持向量机:一个名字奇怪但思想简单的算法,这时候超平面并没有发生改变,但是函数间隔却会发生改变。比如将参数 线性支持向量机:一个名字奇怪但思想简单的算法 和 线性支持向量机:一个名字奇怪但思想简单的算法 同时乘以 2,函数间隔也会变为之前的 2 倍。

为了解决上面的问题,我们引入了几何间隔的概念。一个样本的几何间隔的表示如下:
线性支持向量机:一个名字奇怪但思想简单的算法
可以看到,几何间隔表示的就是空间中的点 线性支持向量机:一个名字奇怪但思想简单的算法 到超平面的距离。如何证明呢?其实 线性支持向量机:一个名字奇怪但思想简单的算法 到超平面的距离其实等于 线性支持向量机:一个名字奇怪但思想简单的算法 与超平面上某点 线性支持向量机:一个名字奇怪但思想简单的算法 连线向法向量 线性支持向量机:一个名字奇怪但思想简单的算法 的投影:

由于 线性支持向量机:一个名字奇怪但思想简单的算法 ,所以:
线性支持向量机:一个名字奇怪但思想简单的算法
也就是说,几何间隔就是将函数间隔对  线性支持向量机:一个名字奇怪但思想简单的算法  做了归一化。类似的,所有训练数据上的几何间隔就是训练数据中最小的一个训练样本的几何间隔:
线性支持向量机:一个名字奇怪但思想简单的算法

最大间隔分类器

了解了间隔之后,SVM 要做的就是找到一个划分超平面,使得距离超平面最近的样本能有更大的间隔。间隔表示距离划分超平面最近的样本到划分超平面几何间隔的两倍。即间隔 线性支持向量机:一个名字奇怪但思想简单的算法 定义如下:
线性支持向量机:一个名字奇怪但思想简单的算法
想要找到具有最大间隔的划分超平面,也就是找到满足下面公式中约束的参数 线性支持向量机:一个名字奇怪但思想简单的算法 和 线性支持向量机:一个名字奇怪但思想简单的算法 ,使得 线性支持向量机:一个名字奇怪但思想简单的算法 最大,即

线性支持向量机:一个名字奇怪但思想简单的算法

为了求解方便,我们将全局函数间隔线性支持向量机:一个名字奇怪但思想简单的算法(稍后解释下为什么可以这样做),这样目标函数就变为了:

线性支持向量机:一个名字奇怪但思想简单的算法


从下图可以直观的看到间隔的含义,也就是两条虚线间隔边界之间的距离,虚线间隔边界的满足 线性支持向量机:一个名字奇怪但思想简单的算法 , 在虚线间隔边界上的样本点就是支持向量。支持向量的含义是说超平面的参数 线性支持向量机:一个名字奇怪但思想简单的算法 和 线性支持向量机:一个名字奇怪但思想简单的算法 仅由支持向量决定,与其他样本无关。

线性支持向量机:一个名字奇怪但思想简单的算法

由于求 线性支持向量机:一个名字奇怪但思想简单的算法 最大值等价于求 线性支持向量机:一个名字奇怪但思想简单的算法 最小值,因此目标函数可以进一步改写:

线性支持向量机:一个名字奇怪但思想简单的算法

得到目标函数之后,回过头来解释下前面令全局函数间隔 线性支持向量机:一个名字奇怪但思想简单的算法 的可行性。假设全局的函数间隔是在样本点线性支持向量机:一个名字奇怪但思想简单的算法处取得的,即线性支持向量机:一个名字奇怪但思想简单的算法,那么目标函数为:

线性支持向量机:一个名字奇怪但思想简单的算法

如果将超平面的参数 线性支持向量机:一个名字奇怪但思想简单的算法 和 线性支持向量机:一个名字奇怪但思想简单的算法 乘以一个大于 0 的系数 线性支持向量机:一个名字奇怪但思想简单的算法,超平面没有发生变化,只是函数表示形式变为了 线性支持向量机:一个名字奇怪但思想简单的算法,这时候全局的函数间隔依然是在样本点线性支持向量机:一个名字奇怪但思想简单的算法处取得,只是变为了原来的 线性支持向量机:一个名字奇怪但思想简单的算法 倍数,即 线性支持向量机:一个名字奇怪但思想简单的算法,那么这时候的目标函数为:

线性支持向量机:一个名字奇怪但思想简单的算法

化简后与上面的目标函数是等价的,也就是说收缩函数间隔,对目标函数求解没有影响。

原始问题与对偶问题

前面已经得到了最大间隔分类器的目标函数,这是一个典型的带不等式约束的二次规划求解问题。这时我们可以通过一些优化的计算包来求解,不过借助拉格朗日 (Lagrange) 函数和对偶问题(dual problem), 我们可以将问题更加简化。

首先,可以将目标函数进行变形,得到:

线性支持向量机:一个名字奇怪但思想简单的算法

根据拉格朗日乘子法,对不等式的约束条件增加拉格朗日乘子 线性支持向量机:一个名字奇怪但思想简单的算法 ,则该问题的拉格朗日函数为:
线性支持向量机:一个名字奇怪但思想简单的算法
其中 线性支持向量机:一个名字奇怪但思想简单的算法

这样上面的目标函数(原始问题)的优化就等价于:

线性支持向量机:一个名字奇怪但思想简单的算法

为什么能够等价呢?当原始问题的约束条件不满足时,即 线性支持向量机:一个名字奇怪但思想简单的算法我们令线性支持向量机:一个名字奇怪但思想简单的算法,使得线性支持向量机:一个名字奇怪但思想简单的算法,这时线性支持向量机:一个名字奇怪但思想简单的算法无解;当原始问题的约束条件满足时,即线性支持向量机:一个名字奇怪但思想简单的算法,由于线性支持向量机:一个名字奇怪但思想简单的算法,则  线性支持向量机:一个名字奇怪但思想简单的算法 ,这时  线性支持向量机:一个名字奇怪但思想简单的算法 。

进一步,我们可以得到原始问题的对偶问题:

线性支持向量机:一个名字奇怪但思想简单的算法

默认情况下,对偶问题的最优解是原始问题的最优解的下界,即:
线性支持向量机:一个名字奇怪但思想简单的算法
这个性质叫做弱对偶性(weak duality),对于所有优化问题都成立,即使原始问题非凸。与弱对偶性相对应的有一个强对偶性(strong duality) ,如果满足强对偶性,对偶问题的最优解与原始问题的最优解相同。也就是说,在强对偶性成立的前提下,可以通过求解对偶问题的解来得到原始问题的解。

那么什么条件下满足强对偶性呢?一种情况是如果满足 Slater  条件,对偶问题等价于原始问题。Slater 条件是说如果原始问题是凸优化问题, 且可行域中至少有一 点使不等式约束严格成立(不等式约束严格成立是说要将不等式严格到不能取等号,在这里就是只能取小于号)。由于原始问题中 线性支持向量机:一个名字奇怪但思想简单的算法 为凸函数,并且存在一些样本点使得 线性支持向量机:一个名字奇怪但思想简单的算法 ,所以满足强对偶性。需要说明的是,Slater 条件成立只是满足强对偶性的一种情况,并非是唯一的情况。

在强对偶性满足的情况下,会有以下性质(KKT条件):

线性支持向量机:一个名字奇怪但思想简单的算法

由于对偶问题公式中的内层对 线性支持向量机:一个名字奇怪但思想简单的算法 和 线性支持向量机:一个名字奇怪但思想简单的算法 的优化属于无约束优化问题,所以可以通过令偏导等于 0 来求出 线性支持向量机:一个名字奇怪但思想简单的算法 和 线性支持向量机:一个名字奇怪但思想简单的算法 的最优值。
线性支持向量机:一个名字奇怪但思想简单的算法
这样,将上面的两个式子带入到 线性支持向量机:一个名字奇怪但思想简单的算法 :

线性支持向量机:一个名字奇怪但思想简单的算法

对偶问题最后可以转为:

线性支持向量机:一个名字奇怪但思想简单的算法

求解出 线性支持向量机:一个名字奇怪但思想简单的算法 之后,即可求出最优的 线性支持向量机:一个名字奇怪但思想简单的算法 和 线性支持向量机:一个名字奇怪但思想简单的算法 即可得到线性支持向量机的表达形式:

线性支持向量机:一个名字奇怪但思想简单的算法

那如何求解最优的 线性支持向量机:一个名字奇怪但思想简单的算法 呢?我们可以根据距离超平面最近的正样本的函数间隔等于距离超平面最近的负样本的函数间隔来求出截距 线性支持向量机:一个名字奇怪但思想简单的算法 。
线性支持向量机:一个名字奇怪但思想简单的算法
根据上面的两个式子以及 KKT 中的互补松弛条件可知,如果 线性支持向量机:一个名字奇怪但思想简单的算法,则该样本不会对 线性支持向量机:一个名字奇怪但思想简单的算法 有任何影响;如果 线性支持向量机:一个名字奇怪但思想简单的算法,那么 线性支持向量机:一个名字奇怪但思想简单的算法,即 线性支持向量机:一个名字奇怪但思想简单的算法 ,也就是说线性支持向量机中, 线性支持向量机:一个名字奇怪但思想简单的算法 的样本是支持向量,这些支持向量都落在了最大间隔边界上。

从前面可以看到,只要从对偶问题中求解出 线性支持向量机:一个名字奇怪但思想简单的算法 ,就能够求出我们需要的超平面,关于 线性支持向量机:一个名字奇怪但思想简单的算法 的求解可以有很多种算法,针对该问题有一种高效求解的算法:序列最小优化算法(Sequential minimal optimization, SMO)。关于该算法的细节,有兴趣的同学可以自己学习下。

参考:

  1. 周志华.机器学习.第六章(支持向量机)

  2. 深入浅出ML之Kernel-Based家族

  3. 从零推导支持向量机(SVM)

  4. 支持向量机通俗导论(理解SVM的三层境界)

  5. 拉格朗日对偶性

历史推荐

 | 


 
长按,识别二维码,加关注

以上是关于线性支持向量机:一个名字奇怪但思想简单的算法的主要内容,如果未能解决你的问题,请参考以下文章

支持向量机(SVM)基本原理

数据挖掘十大算法之SVM支持向量机分类算法

什么是支持向量机?

入门支持向量机1:图文详解SVM原理与模型数学推导

深入SVM:支持向量机核的作用是什么

支持向量机优缺点?