热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SVM——(一)线性可分之目标函数推导方法1

最近在看支持向量机,也查了很多资料。其中关于如何推导出最终的优化目标函数(见文末(2.14))主要有两种方式。第一种就是本文所介绍的,直接通过一个(几何)距离来推导,如周志华机器学

最近在看支持向量机,也查了很多资料。其中关于如何推导出最终的优化目标函数(见文末 (2.14) )主要有两种方式。第一种就是本文所介绍的,直接通过一个(几何)距离来推导,如周志华机器学习中的SVM就是采用的这种方式;第二种就是下文中所要介绍的,先引入函数间隔,再引入几何间隔,然后得到优化目标函数。对于这两种方法,有人可能先接触到第一种,遇到问题查资料,结果又看到原来还有第二种(我本人就是这样)。所以就打算将这两种方式一并记录下来。

找了这么多资料,这绝对是直接用距离来推导出优化问题最详细的文章,赞!

一、SVM算法要解决什么问题

SVM的全称是Support Vector Machine,即支持向量机,主要用于解决模式识别领域中的数据分类问题,属于有监督学习算法的一种。SVM要解决的问题可以用一个经典的二分类问题加以描述。如图1所示,红色和蓝色的二维数据点显然是可以被一条直线分开的,在模式识别领域称为线性可分问题。然而将两类数据点分开的直线显然不止一条。图1(b)和(c)分别给出了A、B两种不同的分类方案,其中黑色实线为分界线,术语称为“决策面”。每个决策面对应了一个线性分类器。虽然在目前的数据上看,这两个分类器的分类结果是一样的,但如果考虑潜在的其他数据,则两者的分类性能是有差别的。

《SVM——(一)线性可分之目标函数推导方法1》

SVM算法认为图1中的分类器A在性能上优于分类器B,其依据是A的分类间隔比B要大。这里涉及到第一个SVM独有的概念“分类间隔”。在保证决策面方向不变且不会出现错分样本的情况下移动决策面,会在原来的决策面两侧找到两个极限位置(越过该位置就会产生错分现象),如虚线所示。虚线的位置由决策面的方向和距离原决策面最近的几个样本的位置决定。而这两条平行虚线正中间的分界线就是在保持当前决策面方向不变的前提下的最优决策面。两条虚线之间的垂直距离就是这个最优决策面对应的分类间隔。显然每一个可能把数据集正确分开的方向都有一个最优决策面,而不同方向的最优决策面的分类间隔通常是不同的,那个具有“最大间隔”的决策面就是SVM要寻找的最优解。而这个真正的最优解对应的两侧虚线所穿过的样本点,就是SVM中的支持样本点,称为“支持向量”。对于图1中的数据,A决策面就是SVM寻找的最优解,而相应的三个位于虚线上的样本点在坐标系中对应的向量就叫做支持向量。

从表面上看,我们优化的对象似乎是这个决策面的方向和位置。但实际上最优决策面的方向和位置完全取决于选择哪些样本作为支持向量。而在经过漫长的公式推导后,你最终会发现,其实与线性决策面的方向和位置直接相关的参数都会被约减掉,最终结果只取决于样本点的选择结果。

到这里,我们明确了SVM算法要解决的是一个最优分类器的设计问题。既然叫作最优分类器,其本质必然是个最优化问题。所以,接下来我们要讨论的就是如何把SVM变成用数学语言描述的最优化问题模型,这就是我们在第二部分要讲的“线性SVM算法的数学建模”。

二、线性SVM算法的数学建模

一个最优化问题通常有两个最基本的因素:
1)目标函数,也就是你希望什么东西的什么指标达到最好;
2)优化对象,你期望通过改变哪些因素来使你的目标函数达到最优。在线性SVM算法中,目标函数显然就是那个“分类间隔”,而优化对象则是决策面。所以要对SVM问题进行数学建模,首先要对上述两个对象(“分类间隔”和“决策面”)进行数学描述。按照一般的思维习惯,我们先描述决策面。

2.1 决策面方程

请你暂时不要纠结于n维空间中的n-1维超平面这种超出正常人想象力的情景。我们就老老实实地看看二维空间中的一根直线,我们从初中就开始学习的直线方程形式很简单。

y=ax+b(2.1)

现在我们做个小小的改变,让原来的

x 轴变成

x1 轴,

y 变成

x2 轴,于是公式

(2.1) 中的直线方程会变成下面的样子


x2=ax1+bax1+(1)x2+b=0(2.2)(2.3)

公式(2.3)的向量形式可以写成:


[a,1][x1x2]+b=0(2.4)

进一步可以写成如下形式:

ωTx+γ=0(2.5)

其中, ω=[ω1,ω2]Tx=[x1,x2]T ,一般我们提到向量的时候,都默认他们是个列向量,所以我在方括号[ ]后面加上了上标T,表示转置。

就着公式(2.5),我们再稍稍尝试深入一点。那就是探寻一下向量 ω=[ω1,ω2]T 和标量 γ 的几何意义是什么。让我们回到公式 (2.4) ,对比公式 (2.5) ,可以发现此时的 ω=[a,1]T 。然后再去看公式 (2.2) ,还记得那条我们熟悉的直线方程中的 a 的几何意义吗?对的,那是直线的斜率。如果我们构造一个向量 ϕ=[1,a]T ,它应该跟我们的公式 (2.2) 描述的直线平行。然后我们求一下两个向量的点积 ωTϕ ,你会惊喜地发现结果是0,就是说这两个向量相互垂直。

上面说了这么多,是想告诉你向量 ω=[ω1,ω2]T 跟直线 ωTx+γ=0 是相互垂直的,也就是说 ω=[ω1,ω2]T 控制了直线的方向。另外,还记得小时候我们学过的那个叫做截距的名词吗?对了, γ 就是截距,它控制了直线的位置。

到这里,我们花了很多篇幅描述一个很简单的超平面方程(其实只是个直线方程),这里真正有价值的是这个控制方向的参数 ω 。接下来,你会有很长一段时间要思考它到底是个什么东西,对于SVM产生了怎样的影响。

2.2 分类“间隔”的计算模型

我们在第一章里介绍过分类间隔的定义及其直观的几何意义。间隔的大小实际上就是支持向量对应的样本点到决策面的距离的二倍,如图2所示。
《SVM——(一)线性可分之目标函数推导方法1》

所以分类间隔计算似乎相当简单,无非就是点到直线的距离公式(推导见文中几何间隔)。公式如下:

d=|ωTx+γ|||ω||(2.6)

这里 ||ω|| 是向量 ω 的模,表示在空间中向量的长度, x=[x1,x2]T 就是支持向量样本点的坐标。 ω , γ 就是决策面方程的参数。而追求W的最大化也就是寻找d的最大化。看起来我们已经找到了目标函数的数学形式。

但问题当然不会这么简单,我们还需要面对一连串令人头疼的麻烦。

2.3 约束条件

接着2.2节的结尾,我们讨论一下究竟还有哪些麻烦没有解决:
1)并不是所有的方向都存在能够实现100%正确分类的决策面,我们如何判断一条直线是否能够将所有的样本点都正确分类?

2)即便找到了正确的决策面方向,还要注意决策面的位置应该在间隔区域的中轴线上,所以用来确定决策面位置的截距 γ 也不能自由的优化,而是受到决策面方向和样本点分布的约束。

3)即便取到了合适的方向和截距,公式 (2.6) 里面的 x 不是随随便便的一个样本点,而是支持向量对应的样本点。对于一个给定的决策面,我们该如何找到对应的支持向量?

以上三条麻烦的本质是“约束条件”,也就是说我们要优化的变量的取值范围受到了限制和约束。事实上约束条件一直是最优化问题里最让人头疼的东西。但既然我们已经论证了这些约束条件确实存在,就不得不用数学语言对他们进行描述。尽管上面看起来是3条约束,但SVM算法通过一些巧妙的小技巧,将这三条约束条件融合在了一个不等式里面。

我们首先考虑一个决策面是否能够将所有的样本都正确分类的约束。图2中的样本点分成两类(红色和蓝色),我们为每个样本点 xi 加上一个类别标签 yi

yi={ +11for blue pointsfor red points(2.7)

如果我们的决策面方程能够完全正确地对图2中的样本点进行分类,就会满足下面的公式:

{ ωTxi+γ>0ωTxi+γ<0for~~yi=1for~~yi=1(2.8)

如果我们要求再高一点,假设决策面正好处于间隔区域的中轴线上,并且相应的支持向量对应的样本点到决策面的距离为 d ,那么公式 (2.8) 就可以进一步写成:

{ (ωTxi+γ)/||ω||d(ωTxi+γ)/||ω||d yi=1 yi=1(2.9)

符号

是“对于所有满足条件的” 的缩写。我们对公式

(2.9) 中的两个不等式的左右两边除上

d ,就可得到:


{ωTdxi+γd1ωTdxi+γd1for~~yi=1for~~yi=1(2.10)

其中:


ωd=ω||ω||d,  γd=γ||ω||d

ωd γd 就当成一条直线的方向矢量和截距。你会发现事情没有发生任何变化,因为直线 ωTdx+γd=0 和直线 ωTx+γ=0 其实是一条直线。就像 2x1+4x2+6=0 x1+2x2+3=0 一样。现在,现在让我忘记原来的直线方程参数 ω γ ,我们可以把参数 ωd γd 重新起个名字,就叫它们 ω γ 。我们可以直接说:“对于存在分类间隔的两类样本点,我们一定可以找到一些决策面,使其对于所有的样本点均满足下面的条件:

{ ωTxi+γ1ωTxi+γ1for~~yi=1for~~yi=1(2.11)

公式 (2.11) 可以认为是SVM优化问题的约束条件的基本描述。

2.4 线性SVM优化问题基本描述

公式 (2.11) 里面 ωTxi+γ=1  or  1 的情况什么时候会发生呢,参考一下公式 (2.9) 就会知道,只有当 xi 是决策面 ωTx+γ=0 所对应的支持向量样本点时,等于1或-1的情况才会出现。这一点给了我们另一个简化目标函数的启发。回头看看公式 (2.6) ,你会发现等式右边分子部分的绝对值符号内部的表达式正好跟公式 (2.11) 中不等式左边的表达式完全一致,无论原来这些表达式是1或者-1,其绝对值都是1。所以对于这些支持向量样本点有:

d=|ωTxi+γ|||ω||=1||ω||,  if xiis a support vector(2.12)

公式 (2.12) 的几何意义就是,支持向量样本点到决策面方程的距离就是 1/||ω|| 。我们原来的任务是找到一组参数 ω, γ 使得分类间隔 W=2d 最大化,根据公式 (2.12) 就可以转变为 ||ω|| 的最小化问题,也等效于 12||ω||2 的最小化问题。我们之所以要在 ||ω|| 上加上平方和 1/2 的系数,是为了以后进行最优化的过程中对目标函数求导时比较方便,但这绝不影响最优化问题最后的解。

另外我们还可以尝试将公式 (2.11) 给出的约束条件进一步在形式上精练,把类别标签 yi 和两个不等式左边相乘,形成统一的表述:

yi(ωTxi+γ)1 xi(2.13)

好了,到这里我们可以给出线性SVM最优化问题的数学描述了:

minω,γ12||ω||2 s. t.  yi(ωTxi+γ)1,  i=1,2,...,m(2.14)

这里m是样本点的总个数,缩写s. t. 表示“Subject to”,是“服从某某条件”的意思。公式 (2.14 )描述的是一个典型的不等式约束条件下的二次型函数优化问题,同时也是支持向量机的基本数学模型。(此时此刻,你也许会回头看2.3节我们提出的三个约束问题,思考它们在公式2.14的约束条件中是否已经得到了充分的体现。但我不建议你现在就这么做,因为2.14采用了一种比较含蓄的方式表示这些约束条件,所以你即便现在不理解也没关系,后面随着推导的深入,这些问题会一点点露出真容。)

接下来,我们将在下一篇文章中讨论:如何利用最优化技术求解公式 (2.14) 描述的问题。哪些令人望而生畏的术语,凸二次优化、拉格朗日对偶、KKT条件、鞍点等等,大多出现在这个部分。全面理解和熟练掌握这些概念当然不容易,但如果你的目的主要是了解这些技术如何在SVM问题进行应用的,那么阅读过下面一章后,你有很大的机会可以比较直观地理解这些问题。

一点小建议,读到这里,你可以试着在纸上随便画一些点,然后尝试用SVM的思想手动画线将两类不同的点分开。你会发现大多数情况下,你会先画一条可以成功分开两类样本点的直线,然后你会在你的脑海中想象去旋转这条线,旋转到某个角度,你就会下意识的停下来,因为如果再旋转下去,就找不到能够成功将两类点分开的直线了。这个过程就是对直线方向的优化过程。对于有些问题,你会发现SVM的最优解往往出现在不能再旋转下去的边界位置,这就是约束条件的边界,对比我们提到的等式约束条件,你会对代数公式与几何想象之间的关系得到一些相对直观的印象。

SVM——(七)SMO(序列最小最优算法)
SVM——(六)软间隔目标函数求解
SVM——(五)线性不可分之核函数
SVM——(四)目标函数求解
SVM——(三)对偶性和KKT条件(Lagrange duality and KKT condition)
SVM——(二)线性可分之目标函数推导方法2
SVM——(一)线性可分之目标函数推导方法1

参考资料:

  • 陈东岳老师文章

推荐阅读
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 支持向量机训练集多少个_25道题检测你对支持向量机算法的掌握程度
    介绍在我们学习机器算法的时候,可以将机器学习算法视为包含刀枪剑戟斧钺钩叉的一个军械库。你可以使用各种各样的兵器,但你要明白这些兵器是需要在合适的时间合理 ... [详细]
  • plt python 画直线_机器学习干货,一步一步通过Python实现梯度下降的学习
    GradientDescent-梯度下降梯度下降法(英语:Gradientdescent)是一个一阶最优化算法,通常也称为最速下降法。要使用梯度下降法找 ... [详细]
  • Stanford机器学习第九讲. 聚类
    原文:http:blog.csdn.netabcjenniferarticledetails7914952本栏目(Machinelearning)包括单参数的线性回归、多参数的线性 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 马尔可夫决策过程Markov Decision Process,MDPKintoki
    Originalurl:http:www.tuicool.comarticlesb6BjAva1.马尔可夫模型的几类子模型我想大家一定听说过马尔科夫链(MarkovChain)& ... [详细]
  • 机器学习之数据均衡算法种类大全+Python代码一文详解
    目录前言一、为什么要做数据均衡?二、数据场景1.大数据分布不均衡2.小数据分布不均衡三、均衡算法类型1.过采样2.欠采样3.组合采样四、算法具体种类1 ... [详细]
  • 开发笔记:小白python机器学习之路——支持向量机
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了小白python机器学习之路——支持向量机相关的知识,希望对你有一定的参考价值。支持 ... [详细]
  • 使用机器学习的疾病预测原文:https://www.gees ... [详细]
  • 开源真香 离线识别率高 Python 人脸识别系统
    本文主要介绍关于python,人工智能,计算机视觉的知识点,对【开源真香离线识别率高Python人脸识别系统】和【】有兴趣的朋友可以看下由【000X000】投稿的技术文章,希望该技术和经验能帮到 ... [详细]
author-avatar
彭菜菜
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有