一、线性可分的支持向量机存在的问题

支持向量机一中,我们介绍了当数据集是线性可分的时候,我们可以使用线性可分的支持向量机将数据进行分类(由于隔了很长时间才更新,因此忘记了支持向量机一的读者可以回看支持向量机一讲解)。但是,在现实生活中,还存在着很多数据是线性不可分的,或者说本来是线性可分的数据因为存在一些异常点,使得不能线性划分。

第一种情况如果数据是不能线性可分的话,线性可分的支持向量机是不适用。而第二种情况下,我们通过下图发现,如果在没有A点的情况,我们学到的超平面是黑线所示,但是由于A点的存在,模型会尽可能的拟合所有训练样本点,使得学习到的超平面就是红线所示。但我们可以很清楚的发现黑线是一个更好的超平面,能够将两类样本点分的更开,从而有更好的泛化能力。因此当有异常点的存在时会很大程度影响模型的泛化能力。

二、软间隔最大化的线性支持向量机问题定义

在线性可分的支持向量机中,是需要保证支持向量到超平面的函数间隔大于等于1的(如果忘记了可以回去查看支持向量机一讲解)。为了解决这类数据问题,使得支持向量机有更强的泛化能力,引入了软间隔最大化的支持向量机。所谓的软间隔就是说为每个样本点引入了一个松弛变量ε,这样支持向量到超平面的函数间隔不需要严格保证大于等于1,可以有ε的弹性范围。即约束条件就变成:

当然这个弹性范围不是随便给的,如果样本需要这个弹性范围,那就必须支付一定的代价,因此目标函数会加上每个样本点的这个弹性范围的代价,使得目标函数变成:

其中,C为惩罚参数,C值越大说明模型更加关注这个弹性范围带来的代价,对误分类的样本点的惩罚就越大。

三、优化软间隔最大化的支持向量机

和线性可分的支持向量机的优化方式类似,我们还是将目标函数以及约束条件使用拉格朗日函数转化为无约束问题:

其中μ和α均为拉格朗日乘子,且α_i≥0,μ_i≥0。

那么我们现在要优化的目标函数是:

当满足KKT条件时,以上问题可以等价于求解其对偶问题。

因此我们可以先求对于w、b、ε的极小值,然后再求拉格朗日乘子α和μ。

L对于w、b、ε求偏导,得:

得到以上三个式子,我们就可以将目标函数L进行优化,消除w和b,得:

现在得到的优化目标函数为:

细心的读者可能发现这跟线性可分的支持向量机的式子只是约束条件有不一样,其他都时一样的。另外,因为目标函数中已经没有了μ参数,因此约束条件可以将后面三个约束条件进行合并,得到进一步的优化目标函数:

同样的,求解α还是使用SMO算法即可。假设现在已经求得了一个最优解α_*,那么我们就可以进一步得到w、b的最优解w_*和b_*,即:

其中,(x_s, y_s)是任一个支持向量对应的样本。每一个支持向量对应的样本就可以得到一个b_*,因此最优解b_*也可以是所有支持向量对应的b的平均值。

求得这些参数之后,我们就可以得到分离超平面:

最终的分类决策函数:

四、KKT条件

上一节中目标函数的优化是通过求解对偶问题求得的,为了保证对偶问题的解就是原问题的解,需要满足以下的KKT条件:

五、支持向量

因为支持向量是跟目标函数有关的样本点,因此,在软间隔最大化的支持向量机中,支持向量要比线性可分的支持向量机的情况复杂一些,支持向量或者在间隔边界上,或者在边界内,或者被误分到超平面的另一边。

如果α = 0, 那么样本点在间隔边界上或者被正确分类,因此在间隔边界上的点是支持向量;如果0<α<C,那么样本点是在间隔边界,因为为了保证ε_i=0,y_i*(w’*x_i+b)-1=0,即样本点就在间隔边界,因此这些点都是支持向量;如果α=C,则μ=0,此时ε_i≠0.因为当ε_i≠0会带来一定惩罚代价,因此会尽量保证其等于0,如前面两种情况。但是现在已经没法保证了,因为要保证u*ε=0,u等于0说明ε没法保证。而当ε_i≠0说明这可能是一个异常点了,并且其也是支持向量。当0≤ε_i<1,那么点还是被正确分类,只是落在了超平面和间隔边界之间,如下图样本点2和4;当ε_i=1,那么点在超平面上,无法正确分类;当ε_i>1,那么点被误分类,如下图样本点1和3:

软间隔的支持向量

六、合页损失函数(hinge loss)

线性支持向量机的损失函数还有另一种解释,也是大家通常说支持向量机的损失函数时会提及的,原因可能是它有个专业学名,而上面说的软间隔最大化,不是一个学名。Hinge loss的形式如下:

其中有:

其实hingeloss和软间隔最大化中提及的是等价的。

当令:

hingeloss就可以写成:

若取λ = 1/ 2C,则:

可以发现这个形式跟软间隔最大化中的损失函数是等价的。

hingeloss的图形如下图:

合页损失函数

至此我们就已经将软间隔最大化的支持向量机讲解完毕。如果还记得在一开始的时候说到的第一种情况线性支持向量机是不适用于非线性可分的话,你就会发现刚才长篇大论说都是当有异常点存在的时候如何得到一个泛化能力更强的线性支持向量机。那么下一篇文章将会讲解支持向量机如何解决非线性数据分类问题,这才是支持向量机强大之处,完美适用于不同类型的数据。敬请关注!

欢迎关注磐创博客资源汇总站:

http://docs.panchuang.net/

欢迎关注PyTorch官方中文教程站:

http://pytorch.panchuang.net/

SVM | 支持向量机原理讲解(二)的更多相关文章

  1. pureMVC简单示例及其原理讲解二(Model层)

    本节将讲述Model层. Model层有VO和Mediator组成,非常简单,仅仅包含两个类:UserVO和UserProxy. UserVO中的构造器用于初始化用户的添加(通过email和密码),另 ...

  2. 4. 支持向量机(SVM)原理

    1. 感知机原理(Perceptron) 2. 感知机(Perceptron)基本形式和对偶形式实现 3. 支持向量机(SVM)拉格朗日对偶性(KKT) 4. 支持向量机(SVM)原理 5. 支持向量 ...

  3. 转:SVM与SVR支持向量机原理学习与思考(一)

    SVM与SVR支持向量机原理学习与思考(一) 转:http://tonysh-thu.blogspot.com/2009/07/svmsvr.html 弱弱的看了看老掉牙的支持向量机(Support ...

  4. 支持向量机原理(四)SMO算法原理

    支持向量机原理(一) 线性支持向量机 支持向量机原理(二) 线性支持向量机的软间隔最大化模型 支持向量机原理(三)线性不可分支持向量机与核函数 支持向量机原理(四)SMO算法原理 支持向量机原理(五) ...

  5. 机器学习实战 - 读书笔记(06) – SVM支持向量机

    前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习笔记,这次是第6章:SVM 支持向量机. 支持向量机不是很好被理解,主要是因为里面涉及到了许多数学知 ...

  6. SVM数学原理推导&鸢尾花实例

    //看了多少遍SVM的数学原理讲解,就是不懂,对偶形式推导也是不懂,看来我真的是不太适合学数学啊,这是面试前最后一次认真的看,并且使用了sklearn包中的SVM来进行实现了一个鸢尾花分类的实例,进行 ...

  7. SVM支持向量机(2)

    零.各种概念 1.硬间隔最大化   2.硬间隔支持向量机 3.线性支持向量机 软间隔最大化 软间隔支持向量机 4.非线性支持向量机 核函数kernel function 一.理解支持向量机SVM的原理 ...

  8. 【机器学习算法-python实现】svm支持向量机(1)—理论知识介绍

    (转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景      强烈推荐阅读(http://www.cnblogs.com/jerrylead/archiv ...

  9. php 变量原理讲解

    php 变量原理讲解 一.变量概念   所谓变量,是指在程序中其值可以变化的量. 程序是管理和处理数据的.在程序运行过程中,我们需要存贮这些数据,变量和常量就是用于保存程序运行时的数据的. 变量通常由 ...

随机推荐

  1. 线程中断 interrupt 和 LockSupport

    本文章将要介绍的内容有以下几点,读者朋友也可先自行思考一下相关问题: 线程中断 interrupt 方法怎么理解,意思就是线程中断了吗?那当前线程还能继续执行吗? 判断线程是否中断的方法有几个,它们之 ...

  2. IdentityServer4迁移至3.x版本注意问题详解

    前言 之前有一位购买我课程的童鞋利用最新的IdentityServer4版本即对应.NET Core 3.x,发布到生产环境在学习,结果出了一些问题,此前我并未过多关注IdentityServer4升 ...

  3. 性能测试之Mysql数据库调优

    一.前言 性能调优前提:无监控不调优,对于mysql性能的监控前几天有文章提到过,有兴趣的朋友可以去看一下 二.Mysql性能指标及问题分析和定位 1.我们在监控图表中关注的性能指标大概有这么几个:C ...

  4. Java程序员考研失败后的面试经历,oppo、VIVO、等面经

      温馨提示:有些可能会遗漏个别问题,都是最近一周的面试,有点忘了. 浪潮(一面挂) 你是网络工程的?对网络很了解? 解释一下什么是广播域 怎么划分子网 说一下CSS的几种分类器 数据库中有哪些聚集函 ...

  5. 正式学习MVC 04

    1.ActionResult ActionResult是一个父类, 子类包括了我们熟知的 ViewResult 返回相应的视图 ContentResult  返回字符串 RedirectResult( ...

  6. https信任库采坑记

    最近在客户现场遇到一个棘手的http问题,现象很直接,访问某https的时候报错: javax.net.ssl.SSLPeerUnverifiedException: peer not authent ...

  7. XCTF---easyjni的WriteUp

    一.题目来源     题目来源:XCTF的mobile区的easyjni题目.     题目下载地址:题目链接地址 二.解题过程     1.下载好题目后,安装到夜神模拟器中,发现有一个输入框和一个按 ...

  8. SpringBoot2 整合ElasticJob框架,定制化管理流程

    本文源码:GitHub·点这里 || GitEE·点这里 一.ElasticJob简介 1.定时任务 在前面的文章中,说过QuartJob这个定时任务,被广泛应用的定时任务标准.但Quartz核心点在 ...

  9. TEA5676 + AT24C08 FM收音机 搜台 存台 mmap 实现读写

    硬件说明TEA5767 + AT24c08 要使用耳机收听,不加功放芯片,声音非常小. 这2个芯片都支持 3.3 或 5.0 电源支持连线比较简单,sda scl 接到 2440 对应的 排针上,找出 ...

  10. ggplot2(10) 减少重复性工作

    10.1 简介 灵活性和鲁棒性的敌人是:重复! 10.2 迭代 last_plot()用于获取最后一次绘制或修改的图形. 10.3 绘图模板 gradient_rb <- scale_colou ...