搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > FinTech修行僧 > 【11】支持向量机SVM:线性可分支持向量机

【11】支持向量机SVM:线性可分支持向量机

FinTech修行僧 2017-12-01

支持向量机SVM


支持向量机(support vector machines,SVM)是一种二类分类模型。它的基本模型是定义在特征空间上的间隔最大线性分类,间隔最大使它有别于感知机;通过核技巧(kernel trick),便可使支持向量机成为实质上的非线性分类器


支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。支持向量机的学习算法便是求解凸二次规划的最优化算法。


支持向量机包括:线性可分支持向量机(linear support vector machine in linearly separable case),线性支持向量机(linear support vector machine),非线性支持向量机(non-linear support vector machine)。


当训练数据线性可分时,通过硬间隔最大化(hard margin maximization),学习一个线性的分类器,即线性可分支持向量机,又称为硬间隔支持向量机


当训练数据近似线性可分时,通过软间隔最大化(soft margin maximization ),学习一个线性的分类器,即线性支持向量机,又称为软间隔支持向量机


当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机


核函数(kernel function)表示将输入从输入空间映射到特征空间得到的特征向量之间的内积


通过使用核函数学习非线性支持向量机,等价于隐式地在高维的特征空间中学习线性支持向量机,这样的方法称为核技巧



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


考虑一个二分类问题。假设输入空间与特征空间为两个不同的空间。输入空间为欧式空间或离散集合,特征空间为欧式空间或希尔伯特空间。


线性可分支持向量机、线性支持向量机假设这两个空间的元素一一对应,并将输入空间中的输入映射为特征空间中的特征向量。非线性支持向量机利用一个从输入空间到特征空间的非线性映射(ф(x))将输入映射为特征向量。


输入都由输入空间转换到特征空间,支持向量机的学习时在特征空间进行的。


线性可分支持向量机


假设给定一个特征空间上的训练数据集【11】支持向量机SVM:线性可分支持向量机,其中,【11】支持向量机SVM:线性可分支持向量机

【11】支持向量机SVM:线性可分支持向量机为第 i 个特征向量,也称为实例,【11】支持向量机SVM:线性可分支持向量机【11】支持向量机SVM:线性可分支持向量机的类标记,当【11】支持向量机SVM:线性可分支持向量机=+1时,称【11】支持向量机SVM:线性可分支持向量机为正例;当【11】支持向量机SVM:线性可分支持向量机=-1时,称【11】支持向量机SVM:线性可分支持向量机为负例,【11】支持向量机SVM:线性可分支持向量机称为样本点。再假设训练数据集是线性可分的。


学习的目标在特征空间中找到一个分离超平面,能将实例分到不同的类。分离超平面对应于方程 ω·x + b = 0,它由法向量ω和截距b决定,可用(ω,b)来表示。


分离超平面将特征空间划分为两部分,一部分是正类,一部分是负类。法向量指向的一侧为正类,另一侧为负类。如下图所示:

【11】支持向量机SVM:线性可分支持向量机


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


线性可分支持向量机的定义:

给定线性可分训练数据集,通过间隔最大化或等价地求解相应的凸二次规划问题学习得到的分离超平面为:

                    【11】支持向量机SVM:线性可分支持向量机

以及相应的分类决策函数

                   【11】支持向量机SVM:线性可分支持向量机

称为线性可分支持向量机


考虑如下图所示的二维特征空间中的分类问题。图中“+”表示正例,“-”表示负例。

【11】支持向量机SVM:线性可分支持向量机

训练数据集线性可分,这时有许多直线能将两类数据正确划分。线性可分支持向量机对应着将两类数据正确划分并且间隔最大的直线,即中间的那条粗线。


那么到底什么才算得上是间隔最大的直线或超平面呢?

要回答这个问题,首先得先引入如下两个概念。


【11】支持向量机SVM:线性可分支持向量机

函数间隔和几何间隔


一般来说,一个点距离分离超平面的远近可以表示分类预测的确信程度。在超平面 ω·x + b = 0 确定的情况下,|ω·x+b| 能够相对地表示点 x 距离超平面的远近,而 ω·x + b 的符号与类标记 y 的符号是否一致能够表示分类是否正确,因此可以用量 y(ω·x+b)来表示分类的正确性及确信度,这便是函数间隔的概念。


函数间隔的概念

对应给定的训练数据集T和超平面(ω,b),定义超平面(ω,b)关于样本点(xi,yi)的函数间隔为

                            【11】支持向量机SVM:线性可分支持向量机

定义超平面(ω,b)关于训练数据集T的函数间隔为超平面(ω,b)关于T中所有样本点(xi,yi)的函数间隔之最小值,即

                            【11】支持向量机SVM:线性可分支持向量机


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


因此,我们需要对分离超平面的法向量ω加某些约束,如规范化,||ω||=1,使得间隔是确定的。这时函数间隔称为几何间隔。


几何间隔的概念

对于给定的训练数据集T和超平面(ω,b),定义超平面(ω,b)关于样本点(xi,yi)的几何间隔为

                【11】支持向量机SVM:线性可分支持向量机

定义超平面(ω,b)关于训练数据集T的几何间隔为超平面(ω,b)关于T中所有样本点(xi,yi)的几何间隔之最小值,即

                    【11】支持向量机SVM:线性可分支持向量机

几何间隔如下图所示:

【11】支持向量机SVM:线性可分支持向量机


超平面(ω,b)关于样本点(xi,yi)的几何间隔一般是实例点到超平面的带符号的距离,当样本点被超平面正确分类时,就是实例点到超平面的距离。因为,空间中一点到某一平面的距离为

                    【11】支持向量机SVM:线性可分支持向量机

而yi 是类标记{+1,-1},如果分类正确,两者的乘积>0。


从定义中,我们可得到几何间隔与函数间隔的关系:

                        【11】支持向量机SVM:线性可分支持向量机


【11】支持向量机SVM:线性可分支持向量机

间隔最大化


支持向量机学习的基本想法是求解能够正确划分训练数据集并且使几何间隔最大的分离超平面。


对线性可分的训练数据集而言,线性可分分离超平面有无穷多个(等价于感知机),但是几何间隔最大化的分离超平面是唯一的,这里的间隔最大化又称为硬间隔最大化(与将要讨论的训练数据集近似线性可分时的软间隔最大化相对应)。


间隔最大化的直观解释是:对训练数据集,找到几何间隔最大的超平面,意味着以充分大的确信度,对训练数据进行分类。


也就是说,不仅将正负实例点分开,而且对最难分的实例点(离超平面最近的点)也有足够大的确信度将它们分开。这样的超平面应该对未知的新实例有很好的分类预测能力。


【11】支持向量机SVM:线性可分支持向量机

最大间隔法的推导


因此,问题转化为求几何间隔最大化这个目标,我们可以表示为如下的约束优化问题:

【11】支持向量机SVM:线性可分支持向量机

即我们希望最大化超平面(ω,b)关于训练集的几何间隔 γ ,约束条件表示的是超平面(ω,b)关于每个训练样本点的几何间隔至少是 γ


考虑到几何间隔与函数间隔的关系,上述问题可以改写为:

【11】支持向量机SVM:线性可分支持向量机


函数间隔【11】支持向量机SVM:线性可分支持向量机的取值并不影响最优化问题的解。事实上,假设将ω和b按比例改变为 λω和λb,这时函数间隔成为【11】支持向量机SVM:线性可分支持向量机


函数间隔的这一改变对上面最优化问题的不等式约束没有影响,对目标函数的优化也没有影响,也就是说,它产生一个等价的最优化问题。这样,就可以取【11】支持向量机SVM:线性可分支持向量机 。将【11】支持向量机SVM:线性可分支持向量机代入上面的最优化问题,注意到最大化【11】支持向量机SVM:线性可分支持向量机和最小化【11】支持向量机SVM:线性可分支持向量机是等价的。于是,就得到下面的线性可分支持向量机学习的最优化问题:

【11】支持向量机SVM:线性可分支持向量机

这是一个凸二次规划问题。


如果求出上述凸二次规划问题的解,ω*,b*,那么就可以得到最大间隔分离超平面ω* ·x+b*=0 及 分类决策函数f(x)=sign(ω*·x+b*),即线性可分支持向量机模型。


补充知识点:凸优化

凸优化问题是指约束最优化问题为

【11】支持向量机SVM:线性可分支持向量机

其中,目标函数 f(ω) 和约束函数gi(ω)都是Rn上的连续可微的凸函数,约束函数hi(ω)是Rn上的仿射函数(即f(x)=a·x+b)。


当目标函数 f(ω)是二次函数且约束函数gi(ω)是仿射函数时,上述凸最优化问题成为凸二次规划问题。


线性可分支持向量机学习算法最大间隔法

【11】支持向量机SVM:线性可分支持向量机

【11】支持向量机SVM:线性可分支持向量机

【11】支持向量机SVM:线性可分支持向量机


若训练数据集T线性可分,则可将训练数据集中的样本点,完全正确分开的,最大间隔分离超平面,存在且唯一。


【11】支持向量机SVM:线性可分支持向量机

支持向量和间隔边界


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

                    【11】支持向量机SVM:线性可分支持向量机

对yi=+1的正例点,支持向量在超平面

                    【11】支持向量机SVM:线性可分支持向量机

上,对yi=-1的负例点,支持向量在超平面

                    【11】支持向量机SVM:线性可分支持向量机

上,如下图所示,在H1和H2上的点就是支持向量

【11】支持向量机SVM:线性可分支持向量机


注意到H1和H2平行,并且没有实例点落在它们中间。在H1和H2之间形成一条长带,分离超平面与它们平行且位于它们中央。长带的宽度,即H1和H2 之间的距离称为间隔(margin)。间隔依赖于分离超平面的法向量ω,等于【11】支持向量机SVM:线性可分支持向量机。H1和H2称为间隔边


在决定分离超平面时,只有支持向量起作用,而其他实例点并不起作用。如果移动支持向量将改变所求的解;但是如果在间隔边界以外移动其他实例点,甚至去掉这些点,则解是不会改变的。


由于支持向量在确定分离超平面中起着决定性作用,所以将这种分类模型称为“支持向量机”。


支持向量的个数一般很少,所以支持向量机由很少的“重要的”训练样本确定。


求以下例子的最大间隔分离超平面

【11】支持向量机SVM:线性可分支持向量机

【11】支持向量机SVM:线性可分支持向量机

【11】支持向量机SVM:线性可分支持向量机

【11】支持向量机SVM:线性可分支持向量机


【11】支持向量机SVM:线性可分支持向量机

线性可分支持向量机学习的对偶算法


为了求解线性可分支持向量机的原始最优化问题

【11】支持向量机SVM:线性可分支持向量机

,我们将它作为原始最优化问题,应用拉格朗日对偶性,通过求解对偶问题(dual problem)得到原始问题(primal problem)的最优解,这就是线性可分支持向量机对偶算法


这样做的优点,一是对偶问题往往更容易求解;二是自然引入核函数,进而推广到非线性分类问题。


步骤如下:

首先,构建拉格朗日函数,为此对优化问题中的每个约束引进拉格朗日乘子【11】支持向量机SVM:线性可分支持向量机,定义拉格朗日函数:【11】支持向量机SVM:线性可分支持向量机

其中,【11】支持向量机SVM:线性可分支持向量机为拉格朗日乘子向量。


根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题:

                    【11】支持向量机SVM:线性可分支持向量机

所以,为了得到对偶问题的解,需要先求【11】支持向量机SVM:线性可分支持向量机对ω,b的极小,再求对α的极大。


(1)求【11】支持向量机SVM:线性可分支持向量机

将拉格朗日函数 【11】支持向量机SVM:线性可分支持向量机分别对ω,b求偏导数并令其等于0 :

【11】支持向量机SVM:线性可分支持向量机

得:

                    【11】支持向量机SVM:线性可分支持向量机

将上面两式带入拉格朗日函数,即得

【11】支持向量机SVM:线性可分支持向量机

【11】支持向量机SVM:线性可分支持向量机


(2)求 【11】支持向量机SVM:线性可分支持向量机对α的极大,即是对偶问题

【11】支持向量机SVM:线性可分支持向量机

将上式的目标函数由求极大转换成求极小,就得到下面与之等价的对偶最优化问题

【11】支持向量机SVM:线性可分支持向量机


解为如下定理所述。


定理:设【11】支持向量机SVM:线性可分支持向量机是对偶最优化问题(即上式)的解,则存在下表 j ,使得【11】支持向量机SVM:线性可分支持向量机,并可按下式求得原始最优化问题的解ω*,b*:

            【11】支持向量机SVM:线性可分支持向量机

证明:利用对偶性的KKT条件,略。


线性可分支持向量机对偶学习算法:

【11】支持向量机SVM:线性可分支持向量机

【11】支持向量机SVM:线性可分支持向量机

【11】支持向量机SVM:线性可分支持向量机

【11】支持向量机SVM:线性可分支持向量机

此时的支持向量为:

考虑原始最优化问题及对偶最优化问题,将训练数据集中对应于【11】支持向量机SVM:线性可分支持向量机的样本点(xi,yi)的实例 xi∈Rn,称为支持向量。


跟着例子,自己走一遍算法:

如下图所示,正例点是x1=(3,3)T,x2=(4,3)T,负例点是x3=(1,1)T,试用上述算法求线性可分支持向量机。

【11】支持向量机SVM:线性可分支持向量机

【11】支持向量机SVM:线性可分支持向量机

【11】支持向量机SVM:线性可分支持向量机

【11】支持向量机SVM:线性可分支持向量机

进而,计算得:



参考文献

【1】李航 · 统计学习方法 · 清华大学出版社

【2】周志华 · 机器学习 · 清华大学出版社

【3】SVM支持向量机-拉格朗日,对偶算法的初解 http://www.mamicode.com/info-detail-506922.html

【4】支持向量机通俗导论 http://blog.csdn.net/macyang/article/details/38782399/

【5】关于SVM--支持向量机的一个故事 http://www.cnblogs.com/sunbinbin/p/5827449.html

版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《【11】支持向量机SVM:线性可分支持向量机》的版权归原作者「FinTech修行僧」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注FinTech修行僧微信公众号

FinTech修行僧微信公众号:gh_10ea17f22036

FinTech修行僧

手机扫描上方二维码即可关注FinTech修行僧微信公众号

FinTech修行僧最新文章

精品公众号随机推荐