Wetts's blog

Stay Hungry, Stay Foolish.

0%

统计学系方法-支持向量机

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

支持向量机学习方法包含构建由简至繁的模型:线性可分支持向量机(linear support vector machine in linearly separable case)、线性支持向量机(linear support vector machine)及非线性支持向量机(non-linear support vector machine)。当训练数据线性可分时,通过硬间隔最大化(hard margin maximization),学习一个线性的分类器,即线性可分支持向量机,又称为硬间隔支持向量机;当训练数据近似线性可分时,通过软间隔最大化(soft margin maximization),也学习一个线性的分类器,即线性支持向量机,又称为软间隔支持向量机;当训练数据线性不可分时,通过使用核技巧(kernel trick)及软间隔足底阿花,学习非线性支持向量机。

当输入空间为欧氏空间或离散集合、特征空间为希尔伯特空间时,核函数(kernel funciton)表示将输入从输入空间映射到特征空间得到的特征向量之间的内积。通过使用核函数可以学习非线性支持向量机,等价于隐式地在高维的特征空间中学习线性支持向量机。这样的方法成为核技巧。核方法(kernel method)是比支持向量机更为一般的机器学习方法。

线性可分支持向量机与硬间隔最大化

线性可分支持向量机

学习的目标是在特征空间中找到一个分离超平面,能将实例分到不同的类。分离超平面对应于方程 wx+b=0,它由法向量 w 和 截距 b 决定,可用 (w, b) 来表示。分离超平面将特征空间划分为两部分,一部分是正类,一部分是负类。法向量指向的一侧为正类,另一侧为负类。

一般地,当训练数据集线性可分时,存在无穷个分离超平面可将两类数据正确分开。感知机利用误分类最小策略,求得分离超平面,不过这时的解有无穷多个。线性可分支持向量机利用间隔最大化求最优分离超平面,这时,解是唯一的。

线性可分支持向量机

函数间隔和几何间隔

函数间隔

函数间隔可以表示分类预测的正确性及确信度。但是选择分离超平面时,只有函数间隔还不够。因为只要成比例地改变 w 和 b,例如将它们改为 2w 和 2b,超平面并没有改变,但函数间隔却成为原来的 2 倍。

可以对分离超平面的法向量 w 加某些约束,如规范化,||w||=1,使得间隔是确定的。这时函数间隔成为几何间隔(geometric margin)。

几何间隔

函数间隔和几何间隔有下面的关系:
函数间隔和几何间隔关系

间隔最大化

支持向量机学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。对线性可分的训练数据集而言,线性可分分离超平面有无穷多个(等价于感知机),但是几何间隔最大的分离超平面是唯一的。这里的间隔最大化又称为硬间隔最大化(与将要讨论的训练数据集近似线性可分时的软间隔最大化相对应)。

间隔最大化的直观解释是:对训练数据集找到几何间隔最大的超平面意味着以充分大的确信度对训练数据进行分类。也就是说,不仅将正负实例点分开,而且对最难分的实例点(离超平面最近的点)也有足够大的确信度将它们分开。这样的超平面应该对未知的新实例有很好的分类预测能力。

最大间隔分离超平面

最大间隔最优化问题1

考虑几何间隔和函数间隔的关系式,可将这个问题改写为:
最大间隔最优化问题2

最大间隔最优化问题3

这是一个凸二次规划(convex quadratic programming)问题。

凸优化问题

最大间隔法

最大间隔分离超平面的存在唯一性

最大间隔分离超平面的存在唯一性

支持向量与间隔边界

在线性可分情况下,训练数据集的样本点中与分离超平面距离最近的样本点的实例称为支持向量(support vector)。支持向量是使约束条件式(7.14)等号成立的点。

支持向量

在决定分离超平面时只有支持向量起作用,而其他实例点并不起作用。如果移动支持向量将改变所求的解;但是如果在间隔边界以外移动其他实例点,甚至去掉这些点,则解是不会改变的。由于支持向量在确定分离超平面中起着决定性作用,所以将这种分类模型称为支持向量机。支持向量的个数一般很少,所以支持向量机由很少的“重要的”训练样本确定。

学习的对偶算法

为了求解线性可分支持向量机的最优化问题,将它作为原始最优化问题,应用拉格朗日对偶性,通过求解对有问题(dual problem)得到原始问题(primal problem)的最优解,这就是线性可分支持向量机的对偶算法(dual algorithm)。这样做的优点,一是对偶问题往往更容易求解;二是自然引入核函数,进而推广到非线性分类问题。

拉格朗日1
拉格朗日2

对偶求解1
对偶求解2-1
对偶求解2-2
对偶问题的解
支持向量

线性支持向量机与软间隔最大化

线性支持向量机

假设训练数据集不是线性可分的,通常情况是,训练数据中有一些特异点(outlier),将这些特异点除去后,剩下大部分的样本点组成的集合是线性可分的。

线性不可分意味着某些样本点不能满足函数间隔大于等于 1 的约束条件。为了解决这个问题,可以对每个样本点引进一个松弛变量 松弛变量,使函数间隔加上松弛变量大于等于 1.这样,约束条件变为 加入松弛变量后的约束条件

同时,对每个松弛变量 松弛变量,支付一个代价 松弛变量。表表函数由原来的 SVM目标函数 变成 加入松弛变量的目标函数

这里,C>0 称为惩罚参数,一般由应用问题决定,C 值大时对误分类的惩罚增大,C 值小时对误分类的惩罚减小。最小化目标函数包含两层含义:使 SVM目标函数 尽量小即间隔尽量大,同时使误分类点的个数尽量小,C 是调和两者的系数。

有了上面的思路,可以和训练数据集线性可分时一样来考虑训练数据集线性不可分时的线性支持向量机学习问题。相应于硬间隔最大化,它称为软间隔最大化。

线性不可分的线性支持向量机的学习问题变成如下凸二次规划(convex quadratic programming)问题(原始问题):
线性支持向量机原始问题

线性支持向量机

学习的对偶算法

线性支持向量机学习算法

支持向量

线性支持向量机支持向量

合页损失函数

经验风险

合页损失函数

非线性支持向量机与核函数

核技巧

非线性分类问题

用线性分类方法求解非线性分类问题分为两步:首先使用一个变换将原空间的数据映射到新空间;然后在新空间里用线性分类学习方法从训练数据中学习分类模型。核技巧就属于这样的方法。

核函数的定义