SVM探讨

目录

  • SVM探讨

    • SVM算法
    • 硬间隔最大化的优化目标
    • 软间隔最大化

SVM探讨

SVM算法

根据处理问题的复杂度,SVM 可由简到繁分为三种:

  • 线性可分支持向量机:硬间隔最大化。
  • 线性支持向量机:数据分布近似线性可分,可通过软间隔最大化(惩罚因子,松弛变量)来线性分隔样本点。
  • 非线性支持向量机:通过核函数提升特征维度,做个一个非线性的变换,来将非线性问题转化为线性问题。

先写出==SVM定义损失函数的策略==
  求得的超平面能够让所有点中离它最近的点具有最大间距。这样我们可以得出结论,我们更应该关心靠近中间分割面的点,让它们尽可能地远离分割面,而不是在所有点上达到最优。因此,SVM考虑局部(不关心已经确定远离的点),logistic回归考虑全局(已经远离的点可能通过调整中间线使其能够更加远离)。

硬间隔最大化的优化目标

minw,b12∥w∥2minw,b12‖w‖2

s.t.yi(wxi+b)≥1,  i=1,2,…,ms.t.yi(wxi+b)≥1,  i=1,2,…,m

  接着构建拉格朗日函数,对每个不等式约束引入另个拉格朗日乘子 αi≥0,i=1,2,…,mαi≥0,i=1,2,…,m,定义拉格朗日函数:

L(w,b,α)==12∥w∥2−∑i=1mαi[yi(wxi+b)−1]12∥w∥2−∑i=1mαiyi(wxi+b)+∑i=1mαi(1)(2)(1)L(w,b,α)=12‖w‖2−∑i=1mαi[yi(wxi+b)−1](2)=12‖w‖2−∑i=1mαiyi(wxi+b)+∑i=1mαi

注意:为什么构造拉格朗日函数的时候,用的是“—”而不是“+”?
  因为标准的凸优化问题再构造拉格朗日函数的时候,不等式的优化问题是“ ≤≤ ”,而 SVM 中的不等式约束都是“ ≥≥ ”,所以在构造拉格朗日函数的时候,取负号“—”.

由于

maxw,b,αL(w,b,α)=12∥w∥2maxw,b,αL(w,b,α)=12‖w‖2

这样我们的优化目标的 原始问题 转化为等价的 广义拉格朗日函数的极小极大问题,如果将其最优解记作 p∗p∗,则有:

p∗=minw,bmaxαL(w,b,α)p∗=minw,bmaxαL(w,b,α)

因此,对偶问题 为 广义拉格朗日函数的极大极小 问题,记其最优解为 d∗d∗,则有:

d∗=maxαminw,bL(w,b,α)d∗=maxαminw,bL(w,b,α)

  这里,由于原始问题先求的 max,满足:p∗≥q∗p∗≥q∗,这称作“弱对偶”,在一些情况下,有 “p∗=q∗p∗=q∗” ,称作“强对偶”。

  但是由于,SVM 的优化目标和约束不等式都是凸函数(凸优化问题),因此这里有 p∗=q∗p∗=q∗ 。同时,不等式的约束关系满足 KKT 条件——对于凸优化问题,KKT 条件是原始问题和对偶问题具有相同解(强对偶)的充分必要条件;非凸优化问题,KKT 条件为必要条件。【拉格朗日对偶性和 KKT 条件相关详细内容,可参考 李航P225】

下面是具体的求解过程:

  (1) 求 minw,bL(w,b,α)minw,bL(w,b,α)

  将拉格朗日函数 L(w,b,α)L(w,b,α) 对 w,bw,b 求导,并令其等于00.

∇wL(w,b,α)=w−∑i=1mαiyixi∇wL(w,b,α)=w−∑i=1mαiyixi

∇bL(w,b,α)=−∑i=1mαiyi=0∇bL(w,b,α)=−∑i=1mαiyi=0

得:

w=∑i=1mαiyixiw=∑i=1mαiyixi

∑i=1mαiyi=0∑i=1mαiyi=0

  将这两个结果代回公式回到拉格朗日函数,得到 L(w,b,α)L(w,b,α) 以 w,bw,b 为自变量函数的极小值:

minw,bL(w,b,α)====12∥w∥2−∑i=1mαiyi(wxi+b)+∑i=1mαi12w∙∑i=1mαiyixi−w∑i=1mαiyixi−b∑i=1mαiyi+∑i=1mαi−12w∙∑i=1mαiyixi+∑i=1mαi−12∑i=1m∑j=1mαiαjyiyjxixj+∑i=1mαi(3)(4)(5)(6)(3)minw,bL(w,b,α)=12‖w‖2−∑i=1mαiyi(wxi+b)+∑i=1mαi(4)=12w∙∑i=1mαiyixi−w∑i=1mαiyixi−b∑i=1mαiyi+∑i=1mαi(5)=−12w∙∑i=1mαiyixi+∑i=1mαi(6)=−12∑i=1m∑j=1mαiαjyiyjxixj+∑i=1mαi

  (2) 求 minw,bL(w,b,α)minw,bL(w,b,α) 对 αα 的极大值,将 minw,bL(w,b,α)minw,bL(w,b,α) 取个负号,由求极大值转化成最小值,就得到下面的最优化问题:

minα12∑i=1m∑j=1mαiαjyiyjxixj−∑i=1mαiminα12∑i=1m∑j=1mαiαjyiyjxixj−∑i=1mαi

s.t.{∑mi=1αiyi=0αi≥0,  i=1,2,…,ms.t.{∑i=1mαiyi=0αi≥0,  i=1,2,…,m

再通过 SMO 算法得到 α∗α∗ 为我们的最终解。同时再代回,可得到:

w∗=∑i=1mα∗iyixiw∗=∑i=1mαi∗yixi

再根据分隔超平面 yj(wxj+b)=1yj(wxj+b)=1,得:

b∗=yj−∑i=1mα∗iyi〈xi,xj〉b∗=yj−∑i=1mαi∗yi〈xi,xj〉

于是,我们就得到分隔超平面 w∗x+b∗=0w∗x+b∗=0 也可写为:

∑i=1mα∗iyi〈x,xi〉+b∗=0∑i=1mαi∗yi〈x,xi〉+b∗=0

分类决策函数可写为:

f(x)=sign(∑i=1mα∗iyi〈x,xi〉+b∗)f(x)=sign(∑i=1mαi∗yi〈x,xi〉+b∗)

也就是说,分类决策函数依赖于输入样本和训练样本的内积。

硬间隔最大化的支持向量

  特别注意的是:训练数据中对应于 α∗i>0αi∗>0 的样本点 (xi,yi)(xi,yi)的样本称为“==支持向量==” 。
  证明:有 KKT 互补条件可知,

αi[yi(wxi+b)−1]=0,i=1,2,…,mαi[yi(wxi+b)−1]=0,i=1,2,…,m

有,因此对应于 α∗>0α∗>0的样本 xixi,有

yi(wxi+b)=1yi(wxi+b)=1

即 xixi 一定在间隔的边界上。
  

软间隔最大化

minw,b12∥w∥2+C∑i=1mξiminw,b12‖w‖2+C∑i=1mξi

s.t.{yi(wxi+b)≥1−ξi , i=1,2,…,mξi≥0 ,  i=1,2,…,ms.t.{yi(wxi+b)≥1−ξi , i=1,2,…,mξi≥0 ,  i=1,2,…,m

其中,惩罚因子 CC 为大于0的常数,ξiξi(克西)为松弛变量。构建拉格朗日函数,对两类不等式约束引入两类拉格朗日乘子 αi≥0,βi≥0,i=1,2,…,mαi≥0,βi≥0,i=1,2,…,m。定义拉格朗日函数:

L(w,b,ξ,α,β)=12∥w∥2+C∑i=1mξi−∑i=1mαi[yi(wxi+b)−1+ξi]−∑i=1mβiξiL(w,b,ξ,α,β)=12‖w‖2+C∑i=1mξi−∑i=1mαi[yi(wxi+b)−1+ξi]−∑i=1mβiξi

  同样原始问题为极小极大问题,现在转化为极大极小对偶问题的解,且原问题和对偶问题具有相同的解。首先求 L(w,b,ξ,α,β)L(w,b,ξ,α,β) 的关于变量 w,b,ξw,b,ξ 的极小值:

∇wL(w,b,ξ,α,β)=w−∑i=1mαiyixi∇wL(w,b,ξ,α,β)=w−∑i=1mαiyixi

∇bL(w,b,ξ,α,β)=−∑i=1mαiyi=0∇bL(w,b,ξ,α,β)=−∑i=1mαiyi=0

∇ξiL(w,b,ξ,α,β)=C−αi−βi=0∇ξiL(w,b,ξ,α,β)=C−αi−βi=0

得:

w=∑i=1mαiyixiw=∑i=1mαiyixi

∑i=1mαiyi=0∑i=1mαiyi=0

C−αi−βi=0C−αi−βi=0

将以上结果代回来格朗日函数,得:

minw,b,ξL(w,b,ξ,α,β)=−12∑i=1m∑j=1mαiαjyiyj〈xi,xj〉+∑i=1mαiminw,b,ξL(w,b,ξ,α,β)=−12∑i=1m∑j=1mαiαjyiyj〈xi,xj〉+∑i=1mαi

接着再求 minw,b,ξL(w,b,ξ,α,β)minw,b,ξL(w,b,ξ,α,β) 对 αα 的极大值,同样取个负号,极大值转化为极小值问题(注意,参数 ββ 被神奇的约掉了,简化了计算;同时,虽然跟硬间隔优化目标的函数形式一样,但是约束条件不一样):

minα12∑i=1m∑j=1mαiαjyiyjxixj−∑i=1mαiminα12∑i=1m∑j=1mαiαjyiyjxixj−∑i=1mαi

s.t.∑i=1mαiyi=0C−αi−βi=0αi≥0,  i=1,2,…,mβi≥0,  i=1,2,…,m(7)(8)(9)(10)(7)s.t.∑i=1mαiyi=0(8)C−αi−βi=0(9)αi≥0,  i=1,2,…,m(10)βi≥0,  i=1,2,…,m

第二个于是带入第四个约束约掉 βiβi ,约束条件和简写为:

s.t.∑i=1mαiyi=00≤αi≤C,  i=1,2,…,m(11)(12)(11)s.t.∑i=1mαiyi=0(12)0≤αi≤C,  i=1,2,…,m

  现在再比较与硬间隔的区别,发现,唯一的在于对 αiαi 取值上限做了个约束。

软间隔的支持向量探讨

  同样,根据KKT 的互补条件:

αi[yi(wxi+b)−1+ξi]=0,i=1,2,…,mαi[yi(wxi+b)−1+ξi]=0,i=1,2,…,m

有==软间隔的支持向量有四种情况==:

  1. 若 0<α∗i<C0<αi∗<C, ξi=0ξi=0,则分类正确,支持向量 xixi 恰好落在间隔边界上(图中 x1x1);
  2. 若 α∗i=Cαi∗=C,0<ξi<10<ξi<1,则分类正确,xixi 在间隔边界与分隔超平面之间(图中 x2x2);
  3. 若 α∗i=Cαi∗=C,ξi=1ξi=1, 则 xixi 在分隔超平面上(图中 x0x0);
  4. 若 α∗i=Cαi∗=C,ξi>1ξi>1, 则分类错误, xixi 在分隔超平面分错的一侧(图中 x3,x4x3,x4)。

软间隔支持向量机的解

w∗=∑i=1mα∗iyixiw∗=∑i=1mαi∗yixi

有了刚才对软间隔中对支持向量的探讨,那么在计算 b∗b∗ 的时候跟硬间隔有所差异。在计算:

b∗=yj−∑i=1mα∗iyi〈xi,xj〉b∗=yj−∑i=1mαi∗yi〈xi,xj〉

时,需要==选择一个满足条件 0<α∗i<C0<αi∗<C 的 α∗iαi∗ ,来计算出 bb==。但是由于软间隔支持向量机对 bb 的解并不唯一,所以实际计算时往往==取所有符合条件的支持向量所求得的 bb 的平局值==。

SVM 损失函数的另一种解释

SVM 的优化目标的另一种解释是,最小化L2正则的合页函数:

minw,b∑i=1Nξi+λ∥w∥2minw,b∑i=1Nξi+λ‖w‖2

即松弛变量 ξiξi 作为损失函数。
若取 λ=12Cλ=12C,则形如之前最大间隔下的优化目标:

minw,b1C(12∥w∥2+C∑i=1Nξi)minw,b1C(12‖w‖2+C∑i=1Nξi)

合页损失函数如下图【李航 P115】:


Tips:由于在凸优化中,仿射函数很重要,这里记录一下
仿射函数:
  仿射函数是特殊的凸函数。既是凸函数,又是凹函数的函数称为仿射函数。它必定是线性函数与常数之和。在有限维空间上,仿射函数就是一次函数。仿射函数的重要性在于局部凸空间(包括赋范线性空间、有限维空间)上的下半连续凸函数一定是连续仿射函数族的上包络。

f(x1,…,xn)=A1x1+⋯+Anxn+bf(x1,…,xn)=A1x1+⋯+Anxn+b

  仿射函数就是一个线性函数,其输入是n维向量,参数A可以是常数,也可以是m*n的矩阵,b可以是常数,也可以是m维的列向量,输出是一个m维的列向量。在几何上,仿射函数是一个线性空间到另一个线性空间的变换。

支持向量机及核函数

目录

  • 常见核函数
  • 核函数的本质
  • SVM 的参数

常见核函数

线性核 (linear kernel):

K(x1,x2)=x1⋅x2+cK(x1,x2)=x1⋅x2+c

多项式核 (polynomial kernel):

K(x1,x2)=(x1⋅x2+c)dK(x1,x2)=(x1⋅x2+c)d

其中 d≥1d≥1,为多项式的次数。

感知器核 (Sigmoid kernel):

K(x1,x2)=tanh(β(x1⋅x2)+c)K(x1,x2)=tanh(β(x1⋅x2)+c)

其中 tanhtanh 为双曲正切函数,β>0, θ<0β>0, θ<0。

高斯核 (Gaussian kernel):

K(x1,x2)=exp(−∥x1−x2∥22σ2), 也记作:exp(−γ∥x1−x2∥2), γ=12σ2K(x1,x2)=exp⁡(−‖x1−x2‖22σ2), 也记作:exp⁡(−γ‖x1−x2‖2), γ=12σ2

其中 σ>0σ>0,为高斯核的带宽(width)。高斯核 也称作 径向基核(RBF)

拉普拉斯核 (Laplace kernel):

K(x1,x2)=exp(−∥x1−x2∥σ), σ>0K(x1,x2)=exp⁡(−‖x1−x2‖σ), σ>0

  核函数的形式可看出 高斯核 和 拉普拉斯核 为 平移不变核多项式核 和 感知器核 为 内积核函数,为 旋转不变核
  

核函数的本质

  将原始输入空间映射到新的特征空间,从而,使得原本线性不可分的样本可能在核空间可分。有效的核函数一定是对称半正定的;往往依赖先验领域知识验证等方案才能选择有效的核函数。

SVM 的参数

1.参数 CC:

  显然,CC 越大,对样本分类正确的要求越严格,间隔宽就带越窄;同时也导致易过拟合。C=+∞C=+∞ 则 软间隔SVM 退化为 硬间隔SVM。

2.高斯核的参数 γγ (γ=12σ2γ=12σ2):

  显然 σσ 和 γγ 成反比关系,对于类似于高斯分布形式的 高斯核 而言,γγ 越小,PDF(概率密度函数,Probability Density Function)平均,趋近于直线(矮胖);越大,PDF 越集中(高瘦)。
  邹博:PDF趋近于直线 即 近似于线性核,分类能力弱化。因为 γγ 很小时,通常在 γ<0.1γ<0.1 时就有:x1⋅x2≈exp(−γ∥x1−x2∥2)x1⋅x2≈exp⁡(−γ‖x1−x2‖2)。
  
小结:

  1. CC 的大小控制了分隔带宽的大小,惩罚 CC 越大,带宽越小,训练样本上的分类能力越强,容易发生过拟合。
  2. γγ 控制了分隔线的非线性程度,γγ 越大,非线性程度越大,分类能力越强,容易发生过拟合。
  ==CC 和 γγ 越大,训练样本上分类能力越强,同时也容易发生过拟合。==
  
  参考下图结果:

机器学习(三)——支持向量机SVM相关推荐

  1. 机器学习实战 支持向量机SVM 代码解析

    机器学习实战 支持向量机SVM 代码解析 <机器学习实战>用代码实现了算法,理解源代码更有助于我们掌握算法,但是比较适合有一定基础的小伙伴.svm这章代码看起来风轻云淡,实则对于新手来说有 ...

  2. 机器学习之支持向量机SVM之python实现ROC曲线绘制(二分类和多分类)

    目录 一.ROC曲线 二.TP.FP.TN.FN 三. python绘制ROC曲线(二分类) 1.思路 2.关键代码 3.完整代码 四. python绘制ROC曲线(多分类) 五.参考文献 一.ROC ...

  3. 优达学城机器学习之--支持向量机(SVM)

    前言 SVM是支持向量机的简称(Support Vector Machine) 文章目录如下: 简述 选择分隔线 核函数(kernel)及其参数c, gamma 过拟合 over-fitting SV ...

  4. OpenCV之ml 模块. 机器学习:支持向量机(SVM)介绍 支持向量机对线性不可分数据的处理

    支持向量机(SVM)介绍 目标 本文档尝试解答如下问题: 如何使用OpenCV函数 CvSVM::train 训练一个SVM分类器, 以及用 CvSVM::predict 测试训练结果. 什么是支持向 ...

  5. [机器学习算法]支持向量机SVM原理简介

    一.问题和超平面描述 给定训练集 分类学习最基本的想法就是基于训练集在样本空间中找到一个划分超平面,将不同类别的样本分开,但能将训练样本分开的划分超平面可能有很多,如下图所示: 直观来看,应该去找位于 ...

  6. 机器学习:支持向量机SVM的SVC和SVR

    支持向量机SVM SVM的工作原理及分类 支持向量机的原理 线性可分的SVM 非线性可分的支持向量机 支持向量机分类SVC 支持向量机回归SVR SVR原理 SVR模型 时间序列曲线预测 SVM的工作 ...

  7. 【机器学习】支持向量机(SVM)代码练习

    本课程是中国大学慕课<机器学习>的"支持向量机"章节的课后代码. 课程地址: https://www.icourse163.org/course/WZU-1464096 ...

  8. [机器学习-实践]支持向量机(SVM)从例子代码中学习

    [机器学习-原理篇]支持向量机(SVM)深入理解 1.用SVM的linear做鸢尾花分类 利用sklearn中自带的dataset,鸢尾花数据库为例,进行二分类. #载入鸢尾花数据集,datasets ...

  9. 入门机器学习(十三)--支持向量机(SVM)

    1. 优化目标(Optimization Objective) 目前来说,我们已经学过了单变量与多变量的线性回归,逻辑回归以及神经网络等机器学习算法,他们在各自的领域都发挥着巨大的作用.但是还有一个算 ...

  10. 吴恩达机器学习7——支持向量机SVM

    吴恩达机器学习7 一.SVM直观理解 1. SVM引入逻辑回归 2. 大边界分类器SVM 3. SVM原理 二.核函数 1. 核函数原理和概念 2. SVM和核函数结合的计算步骤 三.使用SVM 一. ...

最新文章

  1. 日订单50万级分布式事务
  2. 第五课.Python函数(二)
  3. JavaFX学习之Web
  4. hoj2434 going to know him
  5. arcmap常见错误及常用操作(待补充)
  6. SpringBoot2.1.5 (5)---快速构建SpringBoot 项目的两种方式
  7. 买买买!!!电商促销必备的气氛PSD分层海报
  8. html foreach 行 间隔,颜色,javascript简单实现表格行间隔显示颜色并高亮显示
  9. MLP手写数字识别实现
  10. js高级开发:气泡坦克(js对象,属性)
  11. 如何在华为应用市场上传APP
  12. 实验二 任务二 体重测量
  13. Training data-efficient image transformers distillation through attention
  14. L1-009 N个数求和(解决测试点三错误)
  15. 《matlab科研绘图系列》之小提琴图绘制
  16. h5单页,微信浏览器唤醒APP
  17. 小型水库水雨情监测预警自动测报平台 辅助水利在线监测水库水位+雨量
  18. 如何查看raid控制器的信息HP DELL
  19. 【Western Digital】常用固件模块编号及作用介绍
  20. TOFEL托福经验贴

热门文章

  1. Servlet做Controller,实现一个类处理多个请求
  2. Swift - 29 - 参数的默认值
  3. PHP ECSHOP中 诡异的问题:expects parameter 1 to be double
  4. Cent OS 6.X 开机错误修复
  5. 【通用权限管理】角色的分类管理,角色-用户组-职位职务-系统角色的设计上的迷惑也解开...
  6. java --map遍历
  7. linux命令学习_实验楼(一)
  8. nrf51822微信开发入门学习笔记1:开始前的准备
  9. 转载(Asp.net Core 中试使用ZKWeb.System.Drawing)
  10. expected at least 1 bean which qualifies as autowire candidate for this depe (spring无法注入)...