彻底搞清“SVM”


前言

😁分类分析
概念:通过构造一个分类函数或分类器的方法,该方法能把数据库中的数据项映射到给定类别中的某一个,从而可以用于预测未知数据。
数据:线性可分、线性不可分


提示:以下是本篇文章正文内容,下面案例可供参考

一、SVM是什么?

  • 全名:Support Vector Machine(支持向量机)
    Ø 支持向量:支持或支撑平面上把两类类别划分开来的超平面的向量点。
    Ø 机:一个算法
  • 基于统计学习理论的一种机器学习方法。简单的说,就是将数据单元表示在多维空间中,然后对这个空间做划分的算法。
  • 特点:SVM是建立在统计学习理论的VC维理论和结构风险最小原理基础上的,根据有限的样本信息在模型的复杂性之间寻求最佳折衷,以期获得最好的推广能力(或泛化能力)。

概述

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

  • 当一个分类问题,数据是线性可分的,也就是用一根棍就可以将两种小球分开的时候,我们只要将棍的位置放在让小球距离棍的距离最大化的位置即可,寻找这个最大间隔的过程,就叫做最优化。但是,现实往往是很残酷的,一般的数据是线性不可分的,也就是找不到一个棍将两种小球很好的分类。这个时候,我们就需要像大侠一样,将小球拍起,用一张纸代替小棍将小球进行分类。想要让数据飞起,我们需要的东西就是核函数(kernel)把二维小球投射到三维中,用于切分小球的纸,就是超平面。

二、线性SVM

在这里插入图片描述上图中的(a)是已有的数据,红色和蓝色分别代表两个不同的类别。数据显然是线性可分的,但是将两类数据点分开的直线显然不止一条。上图的(b)和©分别给出了B、C两种不同的分类方案,其中黑色实线为分界线,术语称为“决策面”。每个决策面对应了一个线性分类器。虽然从分类结果上看,分类器A和分类器B的效果是相同的。但是他们的性能是有差距的。

2.1 “决策面”方程

在这里插入图片描述在这里插入图片描述
这里w1=a,w2=-1。我们都知道,最初的那个直线方程a和b的几何意义,a表示直线的斜率,b表示截距,a决定了直线与x轴正方向的夹角,b决定了直线与y轴交点位置。那么向量化后的直线的w和r的几何意义是什么呢?
答:标量γ的作用没有变,依然决定了直线的截距。此时,w为直线的法向量。

二维空间的直线方程已经推导完成,将其推广到n为空间,就变成了超平面方程。(一个超平面,在二维空间的例子就是一个直线)但是它的公式没变,依然是:在这里插入图片描述分类间隔方程
在这里插入图片描述在这里插入图片描述在这里插入图片描述目的是为了找出一个分类效果好的超平面作为分类器。分类器的好坏的评定依据是分类间隔W=2d的大小,即分类间隔W越大,我们认为这个超平面的分类效果越好。此时,求解超平面的问题就变成了求解分类间隔W最大化的为题。W的最大化也就是d最大化的。

2.2 约束条件(以下可以证明:有约束条件和没约束条件的公式是一样的)

看起来,我们已经顺利获得了目标函数的数学形式。但是为了求解w的最大值。我们不得不面对如下问题:

  • 如何判断超平面是否将样本点正确分类?
  • 求距离d的最大值,首先需要找到支持向量上的点,怎么在众多的点中选出支持向量上的点呢?

上述需要面对的问题就是约束条件,也就是说优化的变量d的取值范围受到了限制和约束。事实上约束条件一直是最优化问题里最让人头疼的东西。但既然已经知道了这些约束条件确实存在,就不得不用数学语言对他们进行描述。但SVM算法通过一些巧妙的小技巧,将这些约束条件融合到一个不等式里面。

二维平面上有两种点,我们分别对它们进行标记:

  1. 红颜色的圆点标记为1,我们人为规定其为正样本;
  2. 蓝颜色的五角星标记为-1,我们人为规定其为负样本。

对每个样本点xi加上一个类别标签yi:
在这里插入图片描述
如果超平面方程能够完全正确地对上图的样本点进行分类,就会满足下面的方程:
在这里插入图片描述
如果我们要求再高一点,假设决策面正好处于间隔区域的中轴线上,并且相应的支持向量对应的样本点到决策面的距离为d,那么公式进一步写成:在这里插入图片描述
对于所有分类标签为1的样本点,它们到直线的距离都大于等于d(支持向量上的样本点到超平面的距离)。对于所有分类标签为-1的样本点,它们到直线的距离都小于等于d。公式两边都除以d,就可以得到:在这里插入图片描述因为||w||和d都是标量。所上述公式的两个矢量,依然描述一条直线的法向量和截距。
在这里插入图片描述
上述两个公式,都是描述一条直线,数学模型代表的意义是一样的。现在,让对wd和γd重新起个名字,就叫它们w和γ。因此:对于存在分类间隔的两类样本点,我们一定可以找到一些超平面,使其对于所有的样本点均满足下面的条件:在这里插入图片描述
上述方程即给出了SVM最优化问题的约束条件。这时候,可能有人会问了,为什么标记为1和-1呢?因为这样标记方便将上述方程变成如下形式:
在这里插入图片描述
正是因为标签为1和-1,才方便我们将约束条件变成一个约束方程,从而方便计算。

2.3 线性SVM优化

在这里插入图片描述在这里插入图片描述为了在进行最优化的过程中对目标函数求导时比较方便,但这绝对不影响最优化问题最后的求解。将最终的目标函数和约束条件放在一起进行描述:在这里插入图片描述
n是样本点的总个数,缩写s.t.表示”Subject to”,是”服从某某条件”的意思。上述公式描述的是一个典型的不等式约束条件下的二次型函数优化问题,同时也是支持向量机的基本数学模型。

求最优解-----拉格朗日优化
要求解的是最小化问题,所以一个直观的想法是如果能够构造一个函数,使得该函数在可行解区域内与原目标函数完全一致,而在可行解区域外的数值非常大,甚至是无穷大,那么这个没有约束条件的新目标函数的优化问题就与原来有约束条件的原始目标函数的优化问题是等价的问题。这就是使用拉格朗日方程的目的,它将约束条件放到目标函数中,从而将有约束优化问题转换为无约束优化问题。

第一步: 将有约束的原始目标函数转换为无约束的新构造的拉格朗日目标函数公式变形如下:
在这里插入图片描述
其中αi是拉格朗日乘子,αi大于等于0,是我们构造新目标函数时引入的系数变量(我们自己设置)。令:在这里插入图片描述
在这里插入图片描述初衷,就是为了建立一个在可行解区域内与原目标函数相同,在可行解区域外函数值趋近于无穷大的新函数现在,问题变成了求新目标函数的最小值,即:在这里插入图片描述
这里用p*表示这个问题的最优值,且和最初的问题是等价的。

第二步: 将不易求解的优化问题转化为易求解的优化新目标函数,先求最大值,再求最小值。首先就要面对带有需要求解的参数w和b的方程,而αi又是不等式约束,这个求解过程不好做。所以,需要使用拉格朗日函数对偶性,将最小和最大的位置交换一下,这样就变成了:在这里插入图片描述

交换以后的新问题是原始问题的对偶问题,这个新问题的最优值用d来表示。而且d<=p*。关心的是d=p的时候,这才是要的解。需要什么条件才能让d=p呢?

  • 首先必须满足这个优化问题是凸优化问题。
  • 其次,需要满足KKT条件。

凸优化问题的定义是:求取最小值的目标函数为凸函数的一类优化问题。目标函数是凸函数,这个优化问题又是求最小值。所以最优化问题就是凸优化问题。

至此不再进行推导在这里插入图片描述

三、非线性分类

对于以上所述的SVM,处理能力还是很弱,仅仅能处理线性可分的数据。如果数据线性不可分的时候,我们就将低维的数据映射向更高的维次,以此使数据重新线性可分。这转化的关键便是核函数
在这里插入图片描述1. 一个是将低维空间数据映射到高维空间中,然后再根据内积的公式进行计算;
2. 另一个则直接在原来的低维空间中进行计算,而不需要显式地写出映射后的结果。
3. 当样本空间处于高维度时,第一种方法将引发维度灾难(维度很大,维度越高,计算越麻烦。),第二种方法仍然能够从容处理。

3.1 核函数

之前一直在讨论的线性分类器。如果提供的样本线性不可分,结果很简单,线性分类器的求解程序会无限循环,永远也解不出来。这必然使得它的适用范围大大缩小,而它的很多优点我们实在不原意放弃,那么就必须寻找让线性不可分的数据变得线性可分的方法。怎么变得线性可分,这是核函数做的事情。

**举例:**用一个具体文本分类的例子来看看这种向高维空间映射从而分类的方法如何运作,如果我们文本分类问题的原始空间是1000维的(即每个要被分类的文档被表示为一个1000维的向量),在这个维度上问题是线性不可分的。现在我们有一个2000维空间里的线性函数
在这里插入图片描述

它能够将原问题变得可分。式中的 w’和x’都是2000维的向量,只不过w’是定值,而x’是变量。现在我们的输入呢,是一个1000维的向量x,分类的过程是先把x变换为2000维的向量x’,然后求这个变换后的向量x’与向量w’的内积,再把这个内积的值和b相加,就得到了结果,看结果大于阈值还是小于阈值就得到了分类结果。

所以只需要关心那个高维空间里内积的值。而从理论上说, x’是经由x变换来的,因此广义上可以把它叫做x的函数(因为有一个x,就确定了一个x’),而w’是常量,它是一个低维空间里的常量w经过变换得到的,所以给了一个w 和x的值,就有一个确定的f(x’)值与其对应。所以,需要这样一种函数K(w,x),他接受低维空间的输入值,却能算出高维空间的内积值<w’,x’>。

也就是当给了一个低维空间的输入x以后:
g(x)=K(w,x)+b
f(x’)=<w’,x’>+b
这两个函数的计算结果就完全一样,我们也就用不着费力找那个映射关系,直接拿低维的输入往g(x)里面代就可以了。

这样的函数确实存在,它被称作核函数(核,kernel),而且不止一个,事实上,只要是满足了Mercer条件的函数,都可以作为核函数。核函数的基本作用就是接受两个低维空间里的向量,能够计算出经过某个变换后在高维空间里的向量内积值。这就是说,尽管给的问题是线性不可分的,但是就硬当它是线性问题来求解,只不过求解过程中,凡是要求内积的时候就用选定的核函数来算。这样求出来的α再和选定的核函数一组合,就得到分类器。
几个比较常用的核函数如下:
在这里插入图片描述其中,径向基核函数就是高斯核函数。
接下来还有两个问题:

  1. 既然有很多的核函数,针对具体问题该怎么选择?
  2. 如果使用核函数向高维空间映射后,问题仍然是线性不可分的,那怎么办? 答:再加一个核函数,因为现在分的还不够。

对核函数的选择,现在还缺乏指导原则!各种实验的观察结果(不光是文本分类)的确表明,某些问题用某些核函数效果很好,用另一些就很差,但是一般来讲径向基核函数(RBF) 是不会出太大偏差的一种。

在常用的核函数中,应用最广泛的是具有较好学习能力的RBF 核,无论低维、高维、小样本、大样本等情况,RBF 核均适应,具有较宽的收敛域,是较为理想的分类依据函数。Keerthi S S 等人证明了线性核和多项式核是RBF 核的特殊情况。 Lin C J等说明了在某些参数情况下, Sigmoid 核同RBF 核具有相似的性能。

在这里插入图片描述

总结

提示:这里对文章进行总结:

在这里插入图片描述在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值