线性SVM的拉格朗日对偶函数和决策函数

有了损失函数,就需要对损失函数进行求解。这个求解过程异常复杂,涉及到的数学的难度不是推导损失函数的部分可比。并且,在sklearn当中,我们作为使用者完全无法干涉这个求解的过程。因此作为使用sklearn的人,这部分属于进阶内容。
之前得到了线性SVM损失函数的最初形态:
minω,b∣∣ω∣∣22min_{ω,b}\frac {{||ω||}^2}2minω,b​2∣∣ω∣∣2​
服从
yi(ω⋅xi+b)⩾1,i=1,2,...Ny_i(ω\cdot x_i+b)\geqslant 1, \quad i=1,2,...Nyi​(ω⋅xi​+b)⩾1,i=1,2,...N
这个损失函数分为两部分:需要最小化的函数,以及参数求解后必须满足的约束条件。这是一个最优化问题。

将损失函数从最初形态转换为拉格朗日乘数形态

Why need

我们的目标是求解让损失函数最小化的ω,但其实很容易看得出来,如果||ω||为0,f(ω)必然最小。但是,||ω||=0其实是一个无效值,因为:首先,决策边界是ω⋅x+b=0\boldsymbol{ω\cdot x}+b=0ω⋅x+b=0,如果ω为0,则这个向量里包含的所有元素都为0,那就有b = 0这个唯一值。然而,如果b和ω都为0,决策边界就不再是一条直线了,函数间隔yi(ω⋅xi+b)y_i(\boldsymbol{ω\cdot x_i}+b)yi​(ω⋅xi​+b)就会为0,条件中的yi(ω⋅xi+b)⩾1y_i(\boldsymbol{ω\cdot x_i}+b)\geqslant1yi​(ω⋅xi​+b)⩾1就不可能实现,所以ω不可以是一个0向量。可见,单纯让f(ω)=∣∣ω∣∣22f(ω)=\frac {{||ω||}^2}2f(ω)=2∣∣ω∣∣2​为0,是不能求解出合理的ω的,我们希望能够找出一种方式,能够让条件yi(ω⋅xi+b)⩾1y_i(\boldsymbol{ω\cdot x_i}+b)\geqslant1yi​(ω⋅xi​+b)⩾1在计算中也被纳入考虑,一种业界认可的方法是使用拉格朗日乘数法(standard Lagrange multiplier method)

Why can

损失函数是二次的(quadratic),并且损失函数中的约束条件在参数ω和b下是线性的,求解这样的损失函数被称为“凸优化问题”(convex optimization problem)。拉格朗日乘数法正好可以用来解决凸优化问题,这种方法也是业界常用的,用来解决带约束条件,尤其是带有不等式的约束条件的函数的数学方法。首先第一步,使用拉格朗日乘数来将损失函数改写为考虑了约束条件的形式:
L(ω,b,α)=∣∣ω∣∣22−∑i=1Nαi(yi(ω⋅xi+b)−1)(αi⩾0)L(ω,b,α)=\frac {{||ω||}^2}2-\sum_{i=1}^Nα_i(y_i(\boldsymbol{ω\cdot x_i}+b)-1)\quad (α_i\geqslant0)L(ω,b,α)=2∣∣ω∣∣2​−i=1∑N​αi​(yi​(ω⋅xi​+b)−1)(αi​⩾0)
这是一个非常聪明而且巧妙的表达式,它被称为拉格朗日函数,其中αi就叫做拉格朗日乘数。此时,要求解的就不只有参数向量ω和截距b了,也要求解拉格朗日乘数α,而xi和yi都是已知的特征矩阵和标签。

How

拉格朗日函数也分为两部分。第一部分和原始的损失函数一样,第二部分呈现了带不等式的约束条件。我们希望,L(ω,b,α)不仅能够代表原有的损失函数f(ω)和约束条件yi(ω⋅xi+b)⩾1,i=1,2,...Ny_i(\boldsymbol{ω\cdot x_i}+b)\geqslant 1, \quad i=1,2,...Nyi​(ω⋅xi​+b)⩾1,i=1,2,...N,还能够表示想要最小化损失函数来求解ω和b的意图,所以要先以α为参数,求解L(ω,b,α)的最大值,再以ω和b为参数,求解L(ω,b,α)的最小值。因此,目标可以写作:
minω,bmaxαi⩾0L(ω,b,α)(αi⩾0)min_{ω,b}max_{α_i\geqslant0}L(ω,b,α)\quad (α_i\geqslant0)minω,b​maxαi​⩾0​L(ω,b,α)(αi​⩾0)
怎么理解这个式子呢?首先,我们第一步先执行max,即L(ω,b,α)最大化,那就有两种情况:
当yi(ω⋅xi+b)>1y_i(\boldsymbol{ω\cdot x_i}+b)>1yi​(ω⋅xi​+b)>1,函数的第二部分∑i=1Nαi(yi(ω⋅xi+b)−1)\sum_{i=1}^Nα_i(y_i(\boldsymbol{ω\cdot x_i}+b)-1)∑i=1N​αi​(yi​(ω⋅xi​+b)−1)就一定为正,式子∣∣ω∣∣22\frac {{||ω||}^2}22∣∣ω∣∣2​就要减去一个正数,此时若要L(ω,b,α)最大化,则α必须取0。
当yi(ω⋅xi+b)<1y_i(\boldsymbol{ω\cdot x_i}+b)<1yi​(ω⋅xi​+b)<1,函数的第二部分∑i=1Nαi(yi(ω⋅xi+b)−1)\sum_{i=1}^Nα_i(y_i(\boldsymbol{ω\cdot x_i}+b)-1)∑i=1N​αi​(yi​(ω⋅xi​+b)−1)就一定为负,式子∣∣ω∣∣22\frac {{||ω||}^2}22∣∣ω∣∣2​就要减去一个负数,相当于加上一个正数,此时若要L(ω,b,α)最大化,则α必须取正无穷。
若把函数第二部分当作一个惩罚项来看待,则yi(ω⋅xi+b)y_i(\boldsymbol{ω\cdot x_i}+b)yi​(ω⋅xi​+b)大于1时函数没有受到惩罚,而yi(ω⋅xi+b)y_i(\boldsymbol{ω\cdot x_i}+b)yi​(ω⋅xi​+b)小于1时函数受到了极致的惩罚,即加上了一个正无穷项,函数整体永远不可能取到最小值。所以第二步,执行min的命令,求解函数整体的最小值,永远不能让α必须取到正无穷的状况出现,即是说永远不让yi(ω⋅xi+b)<1y_i(\boldsymbol{ω\cdot x_i}+b)<1yi​(ω⋅xi​+b)<1的状况出现,从而实现了求解最小值的同时让约束条件被满足。
现在, L(ω,b,α)就是新的损失函数了,我们的目标是要通过先最大化,再最小化它来求解参数向量ω和截距b的值

机器学习:线性SVM损失函数转换拉格朗日乘数相关推荐

  1. 机器学习笔记之正则化(一)拉格朗日乘数法角度

    机器学习笔记之正则化--拉格朗日乘数法角度 引言 回顾:基于正则化的最小二乘法 正则化描述 正则化的优化对象 常见的正则化方法 正则化角度处理神经网络的过拟合问题 场景构建 最优模型参数的不确定性 最 ...

  2. Python3《机器学习实战》学习笔记(八):支持向量机原理篇之手撕线性SVM

    原 Python3<机器学习实战>学习笔记(八):支持向量机原理篇之手撕线性SVM 置顶 2017年09月23日 17:50:18 阅读数:12644 转载请注明作者和出处: https: ...

  3. 【机器学习】SVM学习(三):线性分类器的求解

    [机器学习]SVM学习(三):线性分类器的求解 2016-10-10 19:56 239人阅读 评论(0) 收藏 举报 本文章已收录于:  机器学习知识库  分类: 机器学习(37)  目录(?)[+ ...

  4. 机器学习中SVM的损失函数,向量积

    SVM即支持向量机(Support Vector Machine, SVM) 是一类按监督学习(supervised learning)方式对数据进行二元分类的广义线性分类器(generalized ...

  5. 机器学习笔记:线性SVM推导

    什么是SVM 支持向量机简称SVM是最大化分类间隔的线性分类器,如果使用核函数,可以解决非线性问题.支持向量机的目标是寻找一个分类超平面,它不仅能正确的分类每一个样本,并且要使得每一类样本中距离超平面 ...

  6. Java机器学习库ML之十一线性SVM

    线性SVM的原理就不多说了,最强大的就是libsvm库(ml库也是用这个),参考:http://blog.csdn.net/fjssharpsword/article/details/53883340 ...

  7. 【机器学习实验五】基于多分类线性SVM实现简易人机猜拳游戏

    文章目录 基于多分类线性SVM&mediapipe手势关键点实现简易人机猜拳游戏 基于SMO优化的SVM分类算法完整实现版本 SVM决策结果与数据集可视化 多分类SVM实战:基于mediapi ...

  8. 机器学习入门(十六):SVM——线性 SVM,间隔由硬到软

    从线性可分 SVM 到线性 SVM 从现实情况引出线性 SVM 线性可分 SVM,这种 SVM 学习的训练数据本身就是线性可分的--可以很清晰地在特征向量空间里分成正集和负集. 线性可分 SVM 正负 ...

  9. 机器学习:SVM、软间隔、随机梯度下降SVM线性算法

    文章目录 SVM目标函数 SVM目标函数推导 函数间隔: 几何间隔: 软间隔.松弛 HingeLoss和软间隔 随机梯度下降算法 线性SVM的算法描述: 线性SVM算法实现: SVM目标函数 SVM目 ...

  10. 机器学习算法 --- SVM (Support Vector Machine)

    一.SVM的简介 SVM(Support Vector Machine,中文名:支持向量机),是一种非常常用的机器学习分类算法,也是在传统机器学习(在以神经网络为主的深度学习出现以前)中一种非常牛X的 ...

最新文章

  1. Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem G. k-palindrome dp
  2. RDKit | 基于RDKit的肽和核酸序列转换分子Mol对象
  3. nyoj_518_取球游戏_201404161738
  4. hbase源码系列(九)StoreFile存储格式
  5. Oracle 数据库启动 startup和startup force的区别
  6. 物联网IoT接入技术分类以及华为OC平台特性
  7. 汇编语言笔记(四):内中断
  8. Google 的垄断正在扼杀自由软件!
  9. 【ECG实践篇(1)】MIT-BIH数据库数据解析的方法以及使用rdann获取人工标注注释的方法
  10. c语言实验——G-鞍点计算
  11. OpenEuler上构建LFS8.4
  12. 算数-02-史丰收算法
  13. 漫画英语作文怎么写 计算机,漫画英文作文怎么写
  14. 友盟用户反馈自定义UI-Android
  15. android 读写文件 简书,Android 读取asset文件
  16. Oracle错误12154的解决方法
  17. python 游戏开发jumpy platform 终板
  18. ios7技巧:你需要掌握的19个iOS7使用技巧
  19. 大型C++网络游戏开发视频教程
  20. 扩计算机内存,如何扩大电脑内存

热门文章

  1. word 单页、多页面旋转
  2. 快速查看本机公网IP地址
  3. 2016 linux发行版排行_2018年10大最漂亮的 Linux 发行版
  4. 如何用WPS在所需的页面设置奇偶数页眉
  5. oracle 生成拼音输入码,拼音码表的生成
  6. qc快充协议2.0/3.0
  7. 2021年12月中国A股钢铁行业上市企业市值排行榜:行业总市值较11月增长1.18%,金洲管道增幅最大(附月榜TOP44详单)
  8. 使用简单好用的WiFi摄像头,远程监控不再难
  9. 恒凯USB数据采集卡在国产麒麟操作系统下的应用(一)环境设置、采集卡驱动安装及C语言采集应用
  10. C# PDF转图片(JPG,Png)