支持向量机(support vector machine, SVM)是一种二类分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;
支持向量机还包括核技巧,这使它成为实质上的非线性分类器, 支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划(convex quadratic programming)的问题, 也等价于正则化的合页损失函数的最小化问题,支持向量机的学习算法是求解凸二次规划的最优化算法。
支持向量机学习方法包含创建由简至繁的模型。
线性可分支持向量机、线性支持向量机及非线性支持向量机。
简单模型是复杂模型的基础,也是复杂模型的特殊情况。
- 当训练数据线性可分时,通过硬间隔最大化(hard margin maximization),学习一个线性的分类器,即线性可分支持向量机(也叫硬间隔支持向量机)。
- 当训练数据近似线性可分时,通过软间隔最大化,也学习一个线性的分类器,即线性支持向量机, 又称为软间隔支持向量机;
- 当训练数据线性不可分时,通过使用核技巧(kenel trick)及软间隔最大化,学习非线性支持向量机。
当输入空间为欧式空间或者离散集合、特征空间为希尔伯特空间时,核函数(kernel function)表示将输入从输入空间映射到特征空间得到的特征向量之间的内积。通过核函数可以学习非线性支持向量机,等价于隐式地在高维的特征空间中学习线性支持向量机(重点), 这样的方法称为核技巧。
核方法是比支持向量机更为一般的机器学习方法。
7.1 线性可分支持向量机与硬间隔最大化
7.1.1 线性可分支持向量机
考虑一个二元分类问题, 假设输入空间与特征空间为两个不同的空间,输入空间为欧氏空间或离散集合。 特征空间为欧式空间或希尔伯特空间。
-
线性可分支持向量机、 线性支持向量机假设这两个空间的元素一一对应,并将输入空间中的输入映射为特征空间的特征向量,
-
非线性支持向量机利用一个从输入空间到特征空间的非线性映射将输入映射为特征向量。
所以输入都由输入空间转换到特征空间, 支持向量机的学习是在特征空间进行的。
假设给定有一个特征空间的训练数据集 T。 xi ∈ Rn , yi = {+1, -1} , xI 为第 i 个特征向量, 也称为实例, yi 为 xi 的类标记, 当 yI = +1 时, 称 xi 为正例, 当 yI = -1 时, 称 xi 为负例, (xi, yi)称为样本点。再假设训练数据集是线性可分的。!!!
学习的目标是在特征空间中找到一个分离超平面, 能将实例分到不同的类, 分离超平面将特征空间划分为两部分,一部分是正类, 一部分是负类, 法向量指向的一侧时正类,另一侧是负类。
一般的,当训练数据线性可分时, 存在无穷个分离超平面可将两类数据正确分开(没错,用膝盖想想都知道)。
感知机利用误分类最小的策略,求得分离超平面,不过这时的解有无穷多个,线性可分支持向量机利用间隔最大化求最优分离超平面(相当于在原有的基础上增肌一个约束),这时,解是唯一的。
定义 7.1 (线性可分支持向量机) 给定线性可分训练数据集,通过间隔最大化或等价地求解相应的凸二次规划问题学习得到的分离超平面为
以及相应的分类决策函数:
称为线性可分支持向量机。
考虑如下图所示的二维特征空间中的分类问题,训练数据线性可分,这时有许多直线能将两类数据正确划分,线性可分支持向量机对应着两类数据正确划分并且间隔最大的直线。
间隔最大及相应的约束最优化问题将在下面描述,下面介绍函数间隔和几何间隔的概念。
7.1.2 函数间隔和几何间隔
一般来说,一个点距离分离超平面的远近可以表示分类预测的确信程度, 在超平面 w • x + b = 0 确定的情况下, | w • x + b | 能够相对地表示点 x 距离超平面的远近,而 w • x + b的符号与类标记及 y 的符号是否一致能够表示分类是否正确,所以可用量 y(w • x + b) 来表示分类的正确性和确信度,这就是函数间隔的概念。
函数间隔可以表示分类预测的正确性及确信度,但是选择分离超平面时,只有函数间隔还不够, 因为只要成比例地改变 w 和 b ,例如将它们改为 2w 和 2b(w • x , w 系数有影响) ,超平面并没有改变,而函数间隔却是原来的 2 倍, 我们需要对分离超平面的法向量做一些约束, 如规范化, || w || = 1,使得间隔是确定的,这时函数间隔成为几何间隔(geometric margin)。
如图所示, 给出了超平面 (w,b) 及法向量 w ,点 A表示某一实例 xi ,其类标记为 yi = +1, 点 A 与超平面(w,b)的距离由线段 AB给出, 记作γi。
其中, || w || 为 w 的 L2 范数, 这时点A 在超平面正的一侧的情形, 如果点 A 在超平面负 的一侧, 即 yi = -1 ,那么点和超平面的距离为:
一般的,当样本点 (xi, yI)被超平面(w, b )正确分类时, 点 xi 与超平面(w,b)的距离是
这就是几何间隔。
7.1.3 间隔最大化
支持向量机学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面, 对线性可分的训练数据集而言, 线性可分分离超平面有无穷多个(等价于感知机),但是几何间隔最大的分离超平面是唯一的,这里的间隔又称为硬间隔最大化。
- 最大间隔分离超平面
这个问题可以表示为下面的约束最优化问题:
在满足超平面关于每个训练样本点的几何间隔至少是γ的约束条件下, 找到最大的几何间隔。
同样的,用函数间隔可表示为下:
这两个是等价问题,下一步因为将 γ^ = 1代入,则解 1 / ||w|| 最大化, 因为 || w || 2 / 2 是等价的, 所以可以得到以下最优化问题(转换应该是为了好解吧)。
于是就得到线面的线性可分支持向量机学习的最优化问题。
这是一个凸二次规划(convex quadratic programming)问题
凸优化问题是指约束最优化问题:
目标函数 f(w) 和 约束函数 gI(w) 是 Rn 上的连续可微的凸函数, 约束函数 hi (w) 是 Rn上的仿射函数。
从Rn到Rm的映射,称为仿射变换(affine transform)或仿射映射(affine map),其中 A 是一个矩阵,b
是一个 m 维向量。当时,称m = 1时 ,称上述仿射变换为仿射函数。
当目标函数 f(w) 是二次函数且约束函数 gi(w) 是仿射函数时,上述凸优化问题成为凸二次规划问题。
- 最大间隔分离超平面的存在唯一性,若训练数据集 T 线性可分,则可将训练数据集中的样本点完全正确分开的最大间隔分离超平面存在且唯一。
- 支持向量和间隔边界
在线性可分情况下,训练数据集的样本点中与分离超平面距离最近的样本点的实例称为支持向量(support vector),支持向量是使约束条件式(7.14)等号成立的点, 即
如上图所示, 在 H1 和 H2 上的点就是支持向量。
注意到 H1 和 H2 平行, 并且没有实例点落在它们中间, 在 H1 与 H2 之间形成一条长带,分离超平面与它们平行且位于它们的中央,长带的宽度, 即 H1 与 H2 之间的距离成为间隔(margin),间隔依赖于分离超平面的法向量 w ,等于 2/ || w|| , H1 和 H2 称为间隔边界。
在决定分离超平面时只有支持向量起作用,而其他实例点并不起作用,因为支持向量在确定分离超平面中起着决定性作用, 所以将这种分类模型称为支持向量机。
支持向量的个数一般很少,所以支持向量机由很少的“重要的” 训练样本确定。