首页 > 其他分享 >支持向量机(SVM)学习小记

支持向量机(SVM)学习小记

时间:2022-12-26 18:38:45浏览次数:36  
标签:SVM 函数 KKT 间隔 问题 超平面 小记 向量 变量


支持向量机(SVM)

简介

  • 是一种二分类模型,基本模型的定义是在特征空间上的间隔最大的线性分类器
  • 间隔最大有利于感知
  • 学习策略: 间隔最大化,可以形式化为一个求解凸二次规划问题,也等价于正则化的合页损失函数的最小化问题

线性可分支持向量机

  • 通过间隔最大化或等价地求解相应的凸二次规划问题得到的分离超平面为
  • 支持向量机(SVM)学习小记_最小化
  • 以及相应的分离决策函数
  • 支持向量机(SVM)学习小记_二次规划_02

支持向量机(SVM)学习小记_支持向量机_03

硬间隔

  • 在超平面支持向量机(SVM)学习小记_二次规划_04确定的情况下,支持向量机(SVM)学习小记_机器学习_05能够表示点支持向量机(SVM)学习小记_最小化_06与超平面的距离,支持向量机(SVM)学习小记_二次规划_04的符号表示为预测为哪一类

函数间隔

  • 定义函数间隔为
  • 支持向量机(SVM)学习小记_最小化_08
  • 定义最小值
    支持向量机(SVM)学习小记_二次规划_09

规范化

  • 只有函数间隔还不够,因为只要成比例的改变w和b,例如改成2w和2b。
  • 这样超平面并没有改变,但是函数间隔却变成了原来的两倍,如果这样额话,那么只要改的很小,那么也会达到最小化的目的
  • 所以我们要加上一点约束
  • 对向量w规范化,支持向量机(SVM)学习小记_二次规划_10
  • 这样使得间隔是确定的,此时的函数间隔变成了几何间隔

几何间隔

支持向量机(SVM)学习小记_最小化_11

  • 点A与超平面(w,b)的距离由线段AB给出
  • 总所周知,ax+by+c=0中(a,b)为直线的发现,所以w也为超平面的发现-
  • 所以点到超平面的距离为
    支持向量机(SVM)学习小记_二次规划_12
  • 因此导出​​几何间隔​
  • 支持向量机(SVM)学习小记_机器学习_13
  • 支持向量机(SVM)学习小记_最小化_14

所以,容易知道函数间隔和几何间隔之间额关系

  • 支持向量机(SVM)学习小记_二次规划_15
  • 而因为||w||=1所以两者相等,但是当w和b成比例变化的时候,函数间隔会变,但是几何间隔不会变(因为超平面并没有变化)

最大间隔分离超平面

  • 几何间隔的问题

支持向量机(SVM)学习小记_二次规划_16

  • 用函数间隔和几何间隔的关系
  • 支持向量机(SVM)学习小记_最小化_17
  • 此时将w和b成比例改变,可以也把支持向量机(SVM)学习小记_机器学习_18也成比例改变,例如同时乘2。所以支持向量机(SVM)学习小记_机器学习_18的值并不影响优化问题,所以固定其为1

再把最小化和最大化的问题转化,所以有
支持向量机(SVM)学习小记_机器学习_20
\ \最小化后变成这种形式可能只是习惯均方误差而已,不过也有是其他形式的变形

  • 到此直接用SGD能简单的解决问题

对偶问题

拉格朗日乘子法

  • 拉格朗日乘子法是一种寻找多元函数在其变量收到一个或多个条件的约束时的极值的方法。
  • 这种方法可以把n个变量与k个约束条件的问题转化成n+k个变量的方程组问题
  • 这个方法中引入了一个或一组新的未知数,即拉格朗日乘数,它们是约束方程作为梯度的线性组合中各向量的系数
  • 这种方法所得到的极点会包含原问题中所有的极值点,但并不保证每个极值点都是原问题的极值点

形式

支持向量机(SVM)学习小记_二次规划_21

  • 更一般的

支持向量机(SVM)学习小记_支持向量机_22

驻点一定在切点处

支持向量机(SVM)学习小记_机器学习_23

  • f(x,y)有n个变量,g(x,y)=c是限制条件画出来的曲线,图上越小的圈的值越小
  • 支持向量机(SVM)学习小记_最小化_24是n个变量的所有集合组成使得f的值为d画出的曲线
  • 易证在切线处有驻点
  • 切线处,梯度方向相同,用向量的形式就是在且向上平行
  • 拉格朗日乘子法的必要条件是支持向量机(SVM)学习小记_支持向量机_25,就是两个梯度平行

引入变量表示梯度向量

  • 引入变量支持向量机(SVM)学习小记_二次规划_26

支持向量机(SVM)学习小记_最小化_27
所以,一旦求出支持向量机(SVM)学习小记_二次规划_28的值,将其套入下列公式,容易求出在无约束条件下的极值和对应的极值点
支持向量机(SVM)学习小记_支持向量机_29
支持向量机(SVM)学习小记_机器学习_30

证明

支持向量机(SVM)学习小记_机器学习_31

对于不等式约束时

支持向量机(SVM)学习小记_二次规划_32

  • 暂时把-c和g(x,y)划分到一起
  • 形式为
    支持向量机(SVM)学习小记_支持向量机_33
KKT条件(专门用于解决拉格朗日乘子法的不等式约束形式)
  • 下面讲述的是KKT条件的感性理解,严格证明涉及拉格朗日对偶,由于是博主以前的文章,这里不做详解
  • 现在g(x,y)有边界解和内部解
  • 如果解本来就在g的内部,那么g的调价就没什么用了,我们的支持向量机(SVM)学习小记_机器学习_34即可
  • 如果解不在外部,那么我们就要在边界上找点了,那么就和等式条件一样了有支持向量机(SVM)学习小记_机器学习_35
  • 所以不管是什么上面的点都有支持向量机(SVM)学习小记_支持向量机_36,称为​​​互补松弛性​
  • 支持向量机(SVM)学习小记_机器学习_37
  • 我们知道等式条件是要梯度平行的,但是这里我们不仅需要平行还需要相反,所以有支持向量机(SVM)学习小记_最小化_38。就是说梯度f应该指向f最陡峭的地方,即指向g的内部,但是梯度g却是指向g的外部的。因此有支持向量机(SVM)学习小记_支持向量机_39
  • 原因:支持向量机(SVM)学习小记_二次规划_40始终指向约束控制的可行区域,所以如果解在区域外的话那需要调整梯度的方向才不会造成影响,调整的方法就是支持向量机(SVM)学习小记_二次规划_41
  • ​对偶可行性​​​。​​按照上面的图就是,g(x)标的是≤,所以方向应该向里面指,但是梯度是从小的地方向大的地方指的,所以对于≤来说,切点的梯度方向是相反的​​。特殊的,如果要求的是max f(x),g(x)≥0,则λ≤0
  • 所以上面的那个形式要对应的KKT条件为
    支持向量机(SVM)学习小记_机器学习_42
    所对应的广义拉格朗日函数还是
    支持向量机(SVM)学习小记_支持向量机_43

引入拉格朗日乘子+问题的对偶

支持向量机(SVM)学习小记_二次规划_44

  • 问题会变成

支持向量机(SVM)学习小记_机器学习_45

  • 为什么会有max(a)呢
  • max的存在代替了原来的约束条件
  • 假设,各个参数范围是符合要求的话,那么会正常的返回值,但是假如有不符合条件的,那么会通过对a的调整取到+∞
  • 所以这个max的作用就是来判断对错的
  • 因为到了这一步之后还是无法求解,(因为我们对无穷大求最小并没有解决问题)所以我们引入对偶问题
    将原始问题极小极大顺序互换后的极大极小问题称为原始问题的对偶问题,原始问题和对偶问题有相同解的条件就是KKT条件
  • 对偶后的问题变成了一个极大极小问题
    支持向量机(SVM)学习小记_支持向量机_46
  • 先对w,b求导得到极小,再对a得到极大

分别对w,b偏导为0得
支持向量机(SVM)学习小记_机器学习_47
带入原问题
支持向量机(SVM)学习小记_二次规划_48

求解

  • 得到支持向量机(SVM)学习小记_最小化_49
  • 根据支持向量机(SVM)学习小记_最小化_49支持向量机(SVM)学习小记_支持向量机_51

支持向量机(SVM)学习小记_二次规划_52

  • 支持向量机(SVM)学习小记_支持向量机_51只依赖于数据中对应的支持向量机(SVM)学习小记_支持向量机_54的样本点,而其他样本点对这两个值没有影响。我们将数据集中对应的支持向量机(SVM)学习小记_支持向量机_54的点称为​​支持向量​
  • 这个用坐标下降算法来优化
  • 搞了半天最后的答案可能只和两个点有关系QAQ,不过毕竟这个还是只能解决线性可分的问题的,解决的都是硬间隔

软间隔

  • 毕竟很多问题还是线性不可分的,所以上述的很多约束并不能成立

所以,我们考虑引入松弛变量支持向量机(SVM)学习小记_支持向量机_56

  • 约束条件变为支持向量机(SVM)学习小记_支持向量机_57

对于每一个松弛变量我们支付一个支持向量机(SVM)学习小记_二次规划_58的代价

  • 支持向量机(SVM)学习小记_机器学习_59
  • 这个的C是惩罚参数

原问题就变成
支持向量机(SVM)学习小记_二次规划_60
然后用类似硬间隔的解决方法就行了

  • 通过拉格朗日乘子法

支持向量机(SVM)学习小记_机器学习_61

  • 偏导

支持向量机(SVM)学习小记_二次规划_62

  • 问题对偶为

支持向量机(SVM)学习小记_二次规划_63

软间隔的另一种解释:合页损失函数(hinge-loss)

  • 另一种解释,最小化下面的函数
    支持向量机(SVM)学习小记_最小化_64
  • 下标“+”是取正值函数即max(x,0),前面那一项是经验损失
  • 优化这个问题和优化软间隔问题等价(经验损失那一项就等价于软间隔支持向量机(SVM)学习小记_二次规划_65)
  • 这个东西直接SGD就行了

上面公式的形式就相当于使得两个类别的距离尽量的大

  • 这种合页损失类的训练模式,在后续很多工作上都有使用,例如TransE

核技巧

  • 非线性的东西往往不好求解,如图上点的范围是一个圆,直接用hinge-loss可能不会得到好的结果,而我们现在的策略就是把把非线性问题转化为线性的问题
  • 设原空间支持向量机(SVM)学习小记_最小化_66,新空间支持向量机(SVM)学习小记_二次规划_67
  • 从原空间到新空间的仿射变换为支持向量机(SVM)学习小记_二次规划_68
  • 然后就能把左边的图变成右边的图
  • 这种方法被称为​​核化​​,用这种方法把非线性分类转化为线性的分类

核函数

  • 支持向量机(SVM)学习小记_最小化_69是输入空间,又设支持向量机(SVM)学习小记_机器学习_70为特征空间(希尔伯特空间)
  • 如存在支持向量机(SVM)学习小记_支持向量机_71为输入空间到特征空间的映射使得支持向量机(SVM)学习小记_最小化_72(这个是两个向量的内积)
  • 经常把输入空间映射到高维空间,这样可能能更高的划分

核技巧在SVM中的应用

  • 我们在对偶问题中涉及输入实例之间的内积,我们可以把内积用核函数代替

支持向量机(SVM)学习小记_机器学习_73

  • 同样其他的有内积的地方也能用核函数来替换

支持向量机(SVM)学习小记_二次规划_74

正定核

  • 已知映射函数支持向量机(SVM)学习小记_最小化_75,可以通过内积来求核函数,但是我们能不构造支持向量机(SVM)学习小记_最小化_75而直接判断一个给定的函数是不是核函数吗?
  • 此地涉及大量的数学证明,不做讲述

常用的核函数

多项式核函数

支持向量机(SVM)学习小记_二次规划_77

  • 对应的SVM是一个p次多项式分类器

高斯核函数

支持向量机(SVM)学习小记_机器学习_78

  • 对应的SVM是高斯径向基函数分类器

字符串核函数

  • 这个是基于离散集合的核函数
  • 自行了解

SMO(序列最小优化方法)

  • SMO算法要解决如下的凸二次规划的对偶问题
    支持向量机(SVM)学习小记_支持向量机_79
  • SMO算法是一个启发式算法
  • 思路:
  • 如果所有变量都满足此优化问题的KKT条件,那么答案就找到了
  • 否则,选择两个变量,固定其他变量,针对两个变量构建一个二次规划问题,这二次规划关于这两个变量的解应该更接近与原始问题的解,因而会使原始二次规划问题的函数目标值更小
  • 重要的是,子问题可以通过解析方法求解
  • 子问题有两个变量,一个是违反KKT条件最严重的那个,另一个由约束条件自动确定
  • 如此,SMO算法不断分解为子问题并对子问题求解,进而达到求解原问题的目的
  • 注意子问题的两个变量只有一个是自由变量,如果a1,a2为两个变量,其他的固定,由约束条件可知,假如a2为自由变量,那么a1可以有其他变量求出来
  • SMO算法包括两个部分:​​求解两个变量二次规划的解析方法​​​,​​选择变量的启发式方法​

两个变量的二次规划的求解方法

我们选择变量a1,a2,其他变量固定
支持向量机(SVM)学习小记_二次规划_80

  • 支持向量机(SVM)学习小记_二次规划_81是常数,显然上面列举的是不含a1,a2的常数项

然后,只是两个变量的优化问题我们就可以在二维的平面上来操作了

  • 因为y是1或-1,所以,两个a在平行于对角线的斜线上
  • 根据上面的条件有
  • L,H为a范围的上下边界
  • 支持向量机(SVM)学习小记_机器学习_82

我们首先求沿着约束方向未经剪辑即未经过不等式约束时支持向量机(SVM)学习小记_二次规划_83的最优解支持向量机(SVM)学习小记_最小化_84,然后再求出支持向量机(SVM)学习小记_二次规划_85


支持向量机(SVM)学习小记_机器学习_86

  • g(x)就是当前学习出的值,Ei就是误差值

然后有
支持向量机(SVM)学习小记_支持向量机_87

证明

支持向量机(SVM)学习小记_机器学习_88

由于支持向量机(SVM)学习小记_二次规划_89
支持向量机(SVM)学习小记_二次规划_90
代入
支持向量机(SVM)学习小记_支持向量机_91
求导
支持向量机(SVM)学习小记_最小化_92
令其为零
支持向量机(SVM)学习小记_机器学习_93
因为支持向量机(SVM)学习小记_二次规划_94
支持向量机(SVM)学习小记_机器学习_95
支持向量机(SVM)学习小记_支持向量机_96
支持向量机(SVM)学习小记_二次规划_97

再由约束得到支持向量机(SVM)学习小记_二次规划_85,在得到支持向量机(SVM)学习小记_支持向量机_99

变量的选择方法

  • 如果只按照上面的方法的话,在寻找变量a会用掉很多的时间,所以我们考虑选择的优化

第一个变量的选择

  • SMO称选择第一个变量的过程为外层循环
  • 外层循环在训练中选取违反KKT条件最严重的样本点,并将其作为第一个变量
  • 支持向量机(SVM)学习小记_二次规划_100
  • 该校验是在误差支持向量机(SVM)学习小记_二次规划_101范围中进行的
  • 在校验的过程中,外层循环首先遍历所有满足条件支持向量机(SVM)学习小记_支持向量机_102的样本点,即在间隔边界的支持向量点,校验他们是否满足KKT条件,如果这些样本点都满足KKT条件,那么遍历整个训练集,校验他们是否满足KKT条件

第二个变量

  • SMO称选择第二个变量的过程为内层循环
  • 假设已经找到了变量支持向量机(SVM)学习小记_最小化_103,我们希望支持向量机(SVM)学习小记_机器学习_104选择的是能是支持向量机(SVM)学习小记_机器学习_104变化足够大的
  • 所以支持向量机(SVM)学习小记_最小化_106是依赖于支持向量机(SVM)学习小记_支持向量机_107
  • 为了加快计算,我们最简单的选择方法是使得支持向量机(SVM)学习小记_机器学习_108最大
  • 因为支持向量机(SVM)学习小记_支持向量机_109确定,支持向量机(SVM)学习小记_最小化_110也确定,那么直接把所有的支持向量机(SVM)学习小记_支持向量机_111存在一个列表(有序列表)中节省时间
  • 在特殊的情况下,如果内层循环通过以上方法不能使目标函数有足够的下降,那么用以下启发式规则继续选择支持向量机(SVM)学习小记_支持向量机_112
  • 遍历间隔边界上的支持向量点,一次将其对应的变量作为支持向量机(SVM)学习小记_机器学习_104试用,直到目标函数有足够的下降
  • 若找不到合适的支持向量机(SVM)学习小记_机器学习_104,那么遍历整个数据集
  • 若上两个都不行,则放弃这个支持向量机(SVM)学习小记_机器学习_115,用其他的支持向量机(SVM)学习小记_机器学习_115

计算阈值b和差值支持向量机(SVM)学习小记_机器学习_117

支持向量机(SVM)学习小记_二次规划_118

将之前的式子整理
支持向量机(SVM)学习小记_机器学习_119

  • 如果支持向量机(SVM)学习小记_支持向量机_120同时满足(0,C)的条件,那么支持向量机(SVM)学习小记_机器学习_121
  • 如果两个值就在0和C上,那么两个b之间的数都是符合KKT条件的阈值,这是就取中点

支持向量机(SVM)学习小记_二次规划_122

S是所有支持向量支持向量机(SVM)学习小记_机器学习_123的集合(不过打的时候直接用整个数据集)


标签:SVM,函数,KKT,间隔,问题,超平面,小记,向量,变量
From: https://blog.51cto.com/u_15923198/5969998

相关文章

  • gym库学习小记
    gym学习gym库是一个开发和比较强化学习算法的包,并提供可视化,非常的有趣gym.make调用智能体模型的库env=gym.make(‘CartPole-v0’)#调用小车倒立摆系统其他库如下`(Acro......
  • BSGS算法学习小记(大步小步算法)
    简介先看一个式子xy≡z(modp),z是质数现在只知道x和z,要求y。大步小步算法(BSGS,BabyStepsGiantSteps)就是解决这个问题。算法流程暴搜的枚举范围根据费马小定理:xp−1≡1。......
  • 决策树学习小记
    决策树类型ID3C4.5CART(回归树)优缺点优点:计算复杂度不高,输出易于理解,对缺失值不敏感,可以处理不相关特征数据缺点:可能会产生过度匹配问题,过拟合使用数据类型:数值型和布尔型......
  • 扩展KMP复习小记
    简介KMP大家都耳熟能详,扩展KMP只是一个扩展版而已,字面意思啦!我记得以前打过这个复习小记的,但是不知为何失踪了。KMP与扩展KMP的对比KMP的next[i]表示从1到i的字符串s,前缀......
  • 带修改的莫队算法学习小记
    简介莫涛大神创造出的离线询问算法的带修改版。算法基础:需要掌握​​莫队算法​​,会打暴搜(暴力)。一个叫莫的双端队列。只支持单点修改操作方法普通的不带修改的莫队算......
  • 小记Vue动态修改表头的方法
    背景:列表A:初始列名称列表对象B:{name1:newName1;name2:newName2}对象B记录了一部分需要修改的列名称。根据列表A使用v-for动态渲染......
  • 创业周年记:召唤神龙一周年小记
    2018年8月8日,我决定离开腾讯的光环,辞职开始创业。《​​回顾4180天在腾讯使用C#的历程,开启新的征途​​》记录了我所说的拥有七龙珠,去召唤神龙,今天正好历时一年时间,非常有必......
  • SVM笔记1:SVM中超平面的理解!
    一、什么是超平面以上是三维为例子。 通过查阅资料对超平面有了一定的认识, 维空间中的超平面由下面的方程确定:                  ......
  • Data & Cloud Summit 2021 活动小记
    前言        大家好,我是梦想家。前段时间我写了一篇文章,​​《参加七牛云“PISA”发布会随想录》​​,当时在评论区说到,如果点赞过15,7月30日将在上海浦东香格里拉......
  • 求解向量和轮廓的交点
    在“学习OpenCV3"的QQ群众,网友且行且珍惜针对前期博客中的内容提出了以下问题:比如这张图,利用PCA求出了特征向量之后,我想要求解与轮廓的交点,不知道有没有简单的方法@禾......