Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >机器学习入门 11-2 SVM背后的最优化问题

机器学习入门 11-2 SVM背后的最优化问题

作者头像
触摸壹缕阳光
发布于 2020-06-10 01:30:33
发布于 2020-06-10 01:30:33
2.3K0
举报

全文字数:3944字

阅读时间:18分钟

前言

本系列是《玩转机器学习教程》一个整理的视频笔记。本小节从SVM算法的基本思想推导成最终的最优化数学表达式,将机器学习的思想转换为数学上能够求解的最优化问题。SVM算法是一个有限定条件的最优化问题。

a

SVM背后的最优化问题

SVM算法的本质就是最大化margin,在二分类任务中margin定义为这两个类别的支撑向量所决定的两根直线的距离。本小节以二分类任务为例。

▲最大化margin其实就是最大化d

上一小节提到对于两个类别的SVM算法最终得到的最优决策边界就是两个类别的支撑向量所决定的两根直线中间区域中间位置的那根直线,因此最优决策边界和两根直线之间都有一个称为d的距离,显然margin = 2d,因此SVM算法最大化margin可以转换成最大化d,找到d的数学表达式同样可以求解这个问题。接下来就来看看如何用数学表达式来表达d。

首先来回忆一个高中解析几何的知识:一个点到一根直线的距离。

▲二维平面上点到直线的距离公式

二维平面中求点(x, y)到直线Ax + By + C = 0的距离公式如上图所示,这里需要注意此时的直线方程没有使用斜截式y = kx + b的形式,而是使用一般线性方程来表示,这是因为斜截式y = kx + b的方程形式有一定的局限性。使用斜截式y = kx + b表示的直线不能和x轴垂直(或不能和y轴平行),此时斜率k等于正无穷是用斜截式y = kx + b的形式表达不了的,但是使用一般直线方程Ax + By + C = 0的形式就可以表达。

现在将点到直线的距离公式推广到n维空间。

▲扩展到n维空间点到直线的距离

无论是线性回归算法还是逻辑回归算法都将直线方程表示为θT * xb = 0的形式,此时的θ中第一个元素为θ0,而xb其实就是在样本特征的前面添加一个值为1的元素。这一小节将直线方程表达成wT * x + b = 0的形式,相当于将θ中第一个元素θ0乘以xb中第一个元素值1这一项单独拿出来,将这一项用字母b来表示并称为截距,所有样本特征前面的系数用w来表示,w其实就是weight权重的意思,实际上相当于给x特征向量中每一个特征附加上一个权值。如果样本有n个特征,则θ中有(n + 1)个元素,而相对应的权重w有n个元素,b是一个元素的截距。换句话说,θ向量中的元素就是截距b和权重w的组合。

这一小节为什么要使用wT * x + b = 0的这种形式来表示直线方程呢?在上面二维平面中点到直线的距离公式中分母的位置是根号下A方加B方。换句话说,分母和直线方程中的截距C是没有关系的,这一点同样可以拓展到n维空间中。假设此时n维空间中有一点x,x到wT * x + b = 0这根直线的距离公式如下图所示。

▲n维空间中x到wT*x+b直线的距离

其中w模的计算方式为w向量中每一个维度的元素平方和之后再开根号。通过这个式子可以看出,其实在二维空间中点到直线的距离公式就是n维空间中点到直线距离公式的一种特殊形式,当n维空间中点到直线的距离公式中的n设置为2时即可得到二维空间中点到直线的距离公式。

下面就可以将上面n维空间中点到直线的距离公式的知识点代入SVM算法的思路中。在二分类问题中,假设SVM算法得到的最优决策边界的表达式为wT * x + b = 0,那些距离最优决策边界最近的样本点到最优决策边界的距离为d,换句话说所有样本点到这个最优决策边界的距离都应该大于等于d,将这个想法转换为数学表达式的话得到的公式如下图右部分所示。

▲所有样本点到最优决策边界的距离都应该大于等于d

前面在处理二分类任务中将二分类的类别分别设置为0和1,这一小节为了方便后续的计算将两个类别的值分别设置1和-1,不过这两个类别在数学上取什么值其实并没有多大的影响,设置不同值的目的仅仅是将两个类别区分开。

对于类别值为1的这一类中任取一个样本xi,第i个样本对应的类别值为1,即yi = 1。将所有类别值为1的样本点代入点到直线的距离公式中的话一定是大于等于d的。具体公式如下图所示。

▲类别值为1的样本点到最优决策边界的距离公式

这里将点到直线的距离公式中分子位置的绝对值去掉了,这是因为对于yi = 1的这些样本点来说,代入直线方程以后是位于大于0的那一侧,因此能够保证这些类别值为1的样本点代入直线方程之后都是大于等于0的。

对于类别值为-1的这一类中任取一个样本xi,第i个样本对应的类别值为-1,即yi = -1。将所有类别值为-1的样本点代入点到直线的距离公式中的话一定是小于等于-d的。具体公式如下图所示。

▲类别值为-1的样本点到最优决策边界的距离公式

此时所有类别值为-1的样本点都在最优决策边界的另外一侧,所以将这些样本点代入直线方程之后都小于0。与此同时,希望这些样本点到直线的距离同样是大于等于d,因此将点到直线的距离公式中分子的绝对值去掉之后将大于等于改成小于等于符号并且将d改成-d。

将上面的两个不等式稍微变形一下,将这两个不等式的两边同时除以一个d,具体变形后的式子如下所示。

▲变形后的不等式

由于d表示距离所以为正数,因此不等式两边同时除以d后不等式符号不变。对于变换后的两个不等式中的分母都变成了w的模乘以d。

仔细看上面的这个式子,对于这个式子来说,w是一个n维向量,但是w的模是一个数,与此同时d也是一个数。换句话说,两个不等式的分母都是一个具体的常数,对于两个不等式的分子来说想象成将w向量中的每一个元素都除以分母的这个常数加上截距b除以分母的这个常数。此时将新的向量w称为wd,新的截距b称为bd,对应的式子如下图所示。

▲将分母融合到分子变换的两个不等式

此时:

  • 如果样本yi = 1的时候就将这个样本xi代入不等式大于等于1的式子中;
  • 如果样本yi = -1的时候就将这个样本xi代入不等式小于等于-1的式子中;

换句话说在我们图中的上下两根直线的直线方程分别是上面两个不等式等于1和等于-1的情况。

▲SVM直线的表达式

最初假设SVM算法的最优决策边界就是两根直线中间位置的那根直线wT*x + b =0。通过前面的一系列推导,最优决策边界上下两侧的直线方程参数都是wb和bd,它们与w和b参数之间相差除以w模乘以d的常数,而对于中间那根最优决策边界的直线方程来说,直线方程的右侧等于0,所以对于这根直线方程来说可以左右两侧同时除以w的模乘以d这个常数。

▲SVM直线的表达式

此时将中间这根直线方程也转换成了wd和bd的参数,和原来wT*x + b = 0的直线方程仅仅相差一个常数,因此两个式子是等价的。比如2x + y = 0所表示的直线方程和4x + 2y = 0所表示的直线方程是同一根直线。

现在这些直线方程的参数全都是用wd和bd,wd是一个含有n个元素的向量,bd是一个数。既然这些直线方程都使用wd和bd这两个未知量来表达,因此这里重新将这两个未知量命名为w和d,这样做的目的是方便后续的计算书写。将wd和bd重新命名为w和d后的结果如下图所示。

▲将wd和bd重新命名为w和d

这里需要注意,此时更改后的w和d和一开始式子中所写的w和d从理论上看已经不是同一个数了,它们之间相差一个系数。现在使用的这个w和d只是一个代替之前式子中的wd和bd的符号而已。

对于支撑向量机SVM来说,相当于求出了上面两个不等式所表达条件的情况下,相应的w和b是多少。这两个不等式使用起来很不方便,所以这里使用一个小技巧将这两个不等式合并成一个不等式。这个技巧和之前在逻辑回归中使用的技巧非常相似。

▲两个不等式合并成一个不等式

yi = 1的不等式大于等于1,而yi = -1的不等式小于等于-1。

  • 对于yi = 1时的不等式,左侧乘以1(yi)以后不等式不变;
  • 对于yi = -1时的不等式,左侧乘以-1(yi)以后不等式方向改变,并且不等式右侧的-1变成1;

两个不等式乘上对应的yi值之后的数学表达式一致,因此可以将两个不等式融合成了一个不等式。总的来说,SVM算法中的所有数据样本点都应该满足融合后的那一个不等式。

不要忘记最终目标是要最大化d,d代表的是支撑向量到决策边界的距离。

▲d的表达式

上面式子中的x是某一个支撑向量,通过之前的推导可以看出代入支撑向量,直线方程要么等于1要么等于-1。换句话说,对于任意的支撑向量要么是红色类别的支撑向量要么是蓝色类别的支撑向量,不论是那一个类别的支撑向量取绝对值之后的结果都为1,所以此时最大化的目标变成了最大化w模分之一。

▲最大化w模分之一

最大化w模分之一相当于最小化w模。在具体求解这个问题的时候,通常最小化的目标不是w的模,而是最小化1/2乘以w模的平方,这样写可以方便后续的求导。

▲最终最小化1/2w模的平方

因此整个支撑向量机算法变成了最优化目标函数1/2乘以w模的平方,不过在这里有一个限定条件,这个条件就是对于所有的数据样本点需要满足yi * (wT * xi + b) ≥ 1。

▲支撑向量机有条件的最优化问题

通常在有条件的最优化问题的表达中在限定条件的前面加上s.t.(such that)。线性回归和逻辑回归算法中的最优化都是没有限定条件的全局最优化问题,而对于SVM算法来说最优化问题是一个有限定条件的最优化问题。加不加限定条件在最优化的领域中求解问题的方法是大不相同的。

  • 如果没有任何限定条件的全局最优化问题只需要对目标函数求导数,并将导数等于0求得对应目标函数的极值点,极值点的位置就是目标函数取最大值或者最小值的位置;
  • 如果有限定条件的最优化问题求解的方式比较复杂,比如使用拉普拉斯算子,但是这些方法对数学的要求比较高;

b

小结

本小节从SVM算法的思想一直推导到最后一个具体形式的数学表达式,将机器学习算法转变成一个在数学上求解最优化的问题。本小节介绍的最优化问题其实解决的是Hard Margin SVM的问题,此时处理的数据是线性可分的。大多数情况下数据不是线性可分的,此时就必须使用Soft Margin SVM。下一小节将会介绍Soft Margin SVM。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI机器学习与深度学习算法 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
编辑精选文章
换一批
SVM 概述
支持向量机的线性分类:是给定一组训练实例,每个训练实例被标记为属于两个类别中的一个或另一个,SVM训练算法创建一个将新的实例分配给两个类别之一的模型,使其成为非概率二元线性分类器。SVM模型是将实例表示为空间中的点,这样映射就使得单独类别的实例被尽可能宽的明显的间隔分开。然后,将新的实例映射到同一空间,并基于他们落在间隔的哪一侧来预测所属类别。
为为为什么
2022/10/28
1.3K0
SVM 概述
机器学习笔记(九)——手撕支持向量机SVM之间隔、对偶、KKT条件详细推导
支持向量机(SVM)是一种有监督的分类算法,并且它绝大部分处理的也是二分类问题,先通过一系列图片了解几个关于SVM的概念。
奶糖猫
2020/07/24
2K0
机器学习笔记(九)——手撕支持向量机SVM之间隔、对偶、KKT条件详细推导
机器学习(9)——SVM数学基础
支持向量机涉及到数学公式和定力非常多,只有掌握了这些数学公式才能更好地理解支持向量机算法。 最优化问题 最优化问题一般是指对于某一个函数而言,求解在其指定作用域上的全局最小值问题,一般分为以下三种情况(备注:以下几种方式求出来的解都有可能是局部极小值,只有当函数是凸函数的时候,才可以得到全局最小值) (1)无约束问题:求解方式一般求解方式梯度下降法、牛顿法、坐标轴下降法等;其中梯度下降法是用递归来逼近最小偏差的模型。我们在前面介绍过; (2)等式约束条件:求解方式一般为拉格朗日乘子法 (3)不等式约束条件:
DC童生
2018/04/27
9280
机器学习(9)——SVM数学基础
深入浅出—一文看懂支持向量机(SVM)
如果你是一名模式识别专业的研究生,又或者你是机器学习爱好者,SVM是一个你避不开的问题。如果你只是有一堆数据需要SVM帮你处理一下,那么无论是Matlab的SVM工具箱,LIBSVM还是python框架下的SciKit Learn都可以提供方便快捷的解决方案。
黄博的机器学习圈子
2020/04/22
15.5K1
深入浅出—一文看懂支持向量机(SVM)
支持向量机原理篇之手撕线性SVM
Python版本: Python3.x 运行平台: Windows IDE: Sublime text3 一、前言 说来惭愧,断更快半个月了,本打算是一周一篇的。感觉SVM瞬间难了不少,推导耗费了很多时间,同时身边的事情也不少,忙了许久。本篇文章参考了诸多大牛的文章写成的,对于什么是SVM做出了生动的阐述,同时也进行了线性SVM的理论推导,以及最后的编程实践,公式较多,还需静下心来一点一点推导。 本文出现的所有代码,均可在我的github上下载,欢迎Follow、Star:https://githu
机器学习算法工程师
2018/03/06
2.1K0
支持向量机原理篇之手撕线性SVM
Python3《机器学习实战》学习笔记(八):支持向量机原理篇之手撕线性SVM
版权声明:本文为博主原创文章,未经博主允许不得转载。个人网站:http://cuijiahua.com。 https://blog.csdn.net/c406495762/article/details/78072313
Jack_Cui
2019/05/25
7150
Python3《机器学习实战》学习笔记(八):支持向量机原理篇之手撕线性SVM
用一张图理解SVM的脉络
SVM在之前的很长一段时间内是性能最好的分类器,它有严密而优美的数学基础作为支撑。在各种机器学习算法中,它是最不易理解的算法之一,要真正掌握它的原理有一定的难度。在本文中,SIGAI将带领大家通过一张图来理清SVM推导过程的核心过程。
SIGAI学习与实践平台
2018/08/07
3K0
用一张图理解SVM的脉络
机器学习之深入理解SVM
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_35512245/article/details/54984251
大黄大黄大黄
2018/09/14
6940
机器学习之深入理解SVM
机器学习入门 11-3 Soft Margin SVM
本系列是《玩转机器学习教程》一个整理的视频笔记。前面两个小节具体介绍了Hard Margin SVM算法的思想,并将这种思想转换为数学中的最优化问题。这一小节:
触摸壹缕阳光
2020/07/02
9190
支持向量机SVM介绍|机器学习
(一)SVM的八股简介 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中。 支持向量机方法是建立在统计学习理论的VC 维理论和结构风险最小原理基础上的,根据有限的样本信息在模型的复杂性(即对特定训练样本的学习精度,Accuracy)和学习能力(即无错误地识别任意样本的能力)之间寻求最佳折衷,以期获得最好的推广能力[14](或称泛化能力)。 以
陆勤_数据人网
2018/02/28
1.4K0
支持向量机SVM介绍|机器学习
彻底搞懂机器学习SVM模型!
自从大半年前接触到SVM以来,感觉一直没怎么把SVM整明白。直到最近上的《模式识别》课程才仿佛打通了我的任督二脉,使我终于搞清楚了SVM的来龙去脉,所以写个博客作个总结。
算法进阶
2023/08/28
1.6K0
彻底搞懂机器学习SVM模型!
文本分类学习 (八)SVM 入门之线性分类器
SVM 和线性分类器是分不开的。因为SVM的核心:高维空间中,在线性可分(如果线性不可分那么就使用核函数转换为更高维从而变的线性可分)的数据集中寻找一个最优的超平面将数据集分隔开来。
ShenduCC
2018/08/01
1.2K0
文本分类学习 (八)SVM 入门之线性分类器
支持向量机通俗导论(理解SVM的三层境界)【转载】
原文链接:https://blog.csdn.net/v_JULY_v/article/details/7624837
用户6021899
2019/08/21
9590
支持向量机通俗导论(理解SVM的三层境界)【转载】
理解支持向量机
支持向量机是机器学习中最不易理解的算法之一,它对数学有较高的要求。之前SIGAI微信公众号已经发过“用一张图理解SVM脉络”,“理解SVM的核函数和参数”这两篇文章,今天重启此话题,对SVM的推导做一个清晰而透彻的介绍,帮助大家真正理解SVM,掌握其精髓。市面上有不少讲解支持向量机的文章和书籍,但真正结构清晰、触达精髓的讲解非常少见。
SIGAI学习与实践平台
2019/10/08
7910
理解支持向量机
机器学习中的最优化算法(全面总结)
对于几乎所有机器学习算法,无论是有监督学习、无监督学习,还是强化学习,最后一般都归结为求解最优化问题。因此,最优化方法在机器学习算法的推导与实现中占据中心地位。在这篇文章中,小编将对机器学习中所使用的优化算法做一个全面的总结,并理清它们直接的脉络关系,帮你从全局的高度来理解这一部分知识。
算法进阶
2023/08/28
8510
机器学习中的最优化算法(全面总结)
SVM原理详解
SVM入门(一)至(三)Refresh 按:之前的文章重新汇编一下,修改了一些错误和不当的说法,一起复习,然后继续SVM之旅. (一)SVM的简介 支持向量机(Support Vector  Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中[10]。  支持向量机方法是建立在统计学习理论的VC 维理论和结构风险最小原理基础上的,根据有限的样本信息在模型的复杂性(即对特定训练样
triplebee
2018/01/12
1.4K0
SVM原理详解
机器学习入门 11-1 什么是SVM
本系列是《玩转机器学习教程》一个整理的视频笔记。本小节主要介绍支撑向量机的核心思想,最终将支撑向量机的思想转换成最优化问题。针对线性可分的问题可以使用Hard Margin SVM,非线性可分的问题可以使用改进的Soft Margin SVM。
触摸壹缕阳光
2020/05/28
7870
手把手教你实现SVM算法
什么是机器学习 (Machine Learning) 机器学习是研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 机器学习的大致分类: 1)分类(模式识别):要求系统依据已知的分类知识对输入的未知模式(该模式的描述)作分析,以确定输入模式的类属,例如手写识别(识别是不是这个数)。 2)问题求解:要求对于给定的目标状态,寻找一个将当前状态转换为目标状态的动作序列。 S
机器学习AI算法工程
2018/03/12
1.8K0
手把手教你实现SVM算法
机器学习中的最优化算法总结
对于几乎所有机器学习算法,无论是有监督学习、无监督学习,还是强化学习,最后一般都归结为求解最优化问题。因此,最优化方法在机器学习算法的推导与实现中占据中心地位。在这篇文章中,SIGAI将对机器学习中所使用的优化算法做一个全面的总结,并理清它们直接的脉络关系,帮你从全局的高度来理解这一部分知识。
SIGAI学习与实践平台
2018/09/29
3.3K0
机器学习中的最优化算法总结
理解SVM的三层境界(二)
第二层、深入SVM 2.1、从线性可分到线性不可分 2.1.1、从原始问题到对偶问题的求解 接着考虑之前得到的目标函数: 由于求 的最大值相当于求 的最小值,所以上述目标函数等价于(w由分母变
IT派
2018/03/29
1.9K0
理解SVM的三层境界(二)
相关推荐
SVM 概述
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档