之前分为两部分讨论过SVM。第一部分讨论了线性SVM,并且针对线性不可分的数据,把原始的问题转化为对偶的SVM求解。http://www.cnblogs.com/futurehau/p/6143178.html

然后考虑到特征数量特别特别多的时候,引入核函数的求解。http://www.cnblogs.com/futurehau/p/6149558.html

但是,之前也遗留了一个问题,就是比如高斯核函数或其他的核函数,虽然large margin能够在一定程度上防止过拟合,但是加入你的核函数太过于powerful的话,还是很有可能带来overfit的问题。另一方面,之前都是基于hard Margin,就是要求你所有的数据都给我分正确,这很容易带来过拟合的问题。

所以,接下来就讨论soft margin来避免过拟合问题。简单来说soft margin就是允许模型犯一些的错误。

一、soft margin 的引入

  如下图所示,我们把原来的hard margin转化为soft margin,允许你在一些点处犯错误,但是最小化的式子就需要改变,意思是你错误的点要尽可能的少。c是用来权衡soft margin和容许犯的错误大小的超参数。

  

  稍微转化一下,表达式变为:

  

  但是我们发现,这样一个表达式并不是一个QP问题的,因为取0取1这个的引入导致是非线性的,那么我们应该怎么转化呢?

  这样思考,之前我们只考虑了分正确没,对于不正确的都一视同仁。我们可不可以改变一下呢?对于那些不正确的,如果离边界比较远的其实是大错误,如果离边界比较近的其实是小错误,这两类错误其实是应该区分开来的,所以引入新的表达式如下:

  

  使用伊布c龙来记录违反的大小。表明你离我想要的值到底有多远。

  这样,我们的问题就转化为:

  

  观察这个表达式,其实也可以看为给定松弛因子做目标函数,给定一个L2的正则项。

  

二、soft margin 的 dual problem

  好了,我们之前得到原始的soft margin 问题:

  

  类似于之前的方法,我们需要把这个问题转换为对偶问题。

  写出拉格朗日函数:

  

  目标:

  

  对伊布c隆求导得到:

  

  带回原来表达式化简得到:

  

  得到最终的表达式:

  

  我们发现,最终的soft Margin dual problem的表达式和hard margin的表达式是内部是一样的,区别在于alpha的范围变化了。所以类似于之前的内部求偏导,我们可以得到:

  

  对比之前,唯一的区别就是alpha的范围改变了。

三、参数b的计算与图形分析

  3.1 b的求解

  之前得到了几个参数,还差b。b的表达和之前有所不同,这里特别分析。

  

  只有第二个等式C不等于alpha的时候才有确定的解,否则只能由kkt条件给出一个范围。

  

  3.2 C的影响

  

  3.3 alpha的物理意义

  

   

4. leave one out cross validation

  还不太理解。

  

  

  

SVM3 Soft Margin SVM的更多相关文章

  1. Jordan Lecture Note-7: Soft Margin SVM

    Soft Margin SVM  (1)Recall 之前分析到SVM的模型为: \begin{align}\mathop{\min}&\quad \frac{1}{2}w^\prime w\ ...

  2. 机器学习:SVM(目标函数推导:Hard Margin SVM、Soft Margin SVM)

    一.Hard Margin SVM SVM 的思想,最终用数学表达出来,就是在优化一个有条件的目标函数: 此为 Hard Margin SVM,一切的前提都是样本类型线性可分: 1)思想 SVM 算法 ...

  3. 机器学习——SVM详解(标准形式,对偶形式,Kernel及Soft Margin)

    (写在前面:机器学习入行快2年了,多多少少用过一些算法,但由于敲公式太过浪费时间,所以一直搁置了开一个机器学习系列的博客.但是现在毕竟是电子化的时代,也不可能每时每刻都带着自己的记事本.如果可以掏出手 ...

  4. Support Vector Machine(3):Soft Margin 平衡之美

    很多材料上面讲道“引入Soft Margin的原因是因为数据线性不可分”,个人认为有些错误,其实再难以被分解的数据,如果我们用很复杂的弯弯绕曲线去做,还是可以被分解,并且映射到高维空间后认为其线性可分 ...

  5. <老古董>线性支持向量机中的硬间隔(hard margin)和软间隔(soft margin)是什么

    _________________________________________________________________________________________________ Th ...

  6. 走过路过不要错过 包你一文看懂支撑向量机SVM

    假设我们要判断一个人是否得癌症,比如下图:红色得癌症,蓝色不得. 看一下上图,要把红色的点和蓝色的点分开,可以画出无数条直线.上图里黄色的分割更好还是绿色的分割更好呢?直觉上一看,就是绿色的线更好.对 ...

  7. 机器学习:SVM(scikit-learn 中的 SVM:LinearSVC)

    一.基础理解 Hard Margin SVM 和 Soft Margin SVM 都是解决线性分类问题,无论是线性可分的问题,还是线性不可分的问题: 和 kNN 算法一样,使用 SVM 算法前,要对数 ...

  8. 机器学习:SVM(基础理解)

    一.基础理解 1)简介 SVM(Support Vector Machine):支撑向量机,既可以解决分类问题,又可以解决回归问题: SVM 算法可分为:Hard Margin SVM.Soft Ma ...

  9. tensorflow实现svm iris二分类——本质上在使用梯度下降法求解线性回归(loss是定制的而已)

    iris二分类 # Linear Support Vector Machine: Soft Margin # ---------------------------------- # # This f ...

随机推荐

  1. linux平台编译安装Poco C++

    1.到官网下载poco-1.4.6p4-all.tar.gz,地址为http://pocoproject.org/download/index.html 2.同时下载说明文档 3.根据说明文档执行安装 ...

  2. hdu4497 GCD and LCM ——素数分解+计数

    link:http://acm.hdu.edu.cn/showproblem.php?pid=4497 如果G%L != 0,说明一定无解. 把K = G / L质数分解,G / L = p1^t1 ...

  3. 项目Postmortem

    设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 解决网站前端的数据处理以及获取问题,定义的很清楚,对于典型用户也比较清晰,因为主要只有一个用户,所以对于 ...

  4. Python 面向对象(初级篇) (转)

    概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发"更快更好更强..." 面 ...

  5. Mysql通信协议

    Mysql四种通信协议(linux下本地连接的都是socket 其他都是tcp) 当连接mysql时,使用-h127.0.0.1时,linux与unix下的连接协议为socket协议,windows下 ...

  6. SQL Server使用convert对datetime日期数据进行获取

    来源:http://database.51cto.com/art/201007/211883.htm 备注:本文的语法讲解确实是比较乱,似乎格式不太严谨.参考时还是以实例验证为准比较好 以下的文章主要 ...

  7. c语言字符串操作大全

     C语言字符串操作函数 函数名: strcpy 功  能: 拷贝一个字符串到另一个 用  法: char *stpcpy(char *destin, char *source); 程序例: #incl ...

  8. 【python】类的访问限制

    在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑. 但是,从前面Student类的定义来看,外部代码还是可以自由地修改一个实例的na ...

  9. activiti自定义流程之整合(五):启动流程时获取自定义表单

    流程定义部署之后,自然就是流程定义列表了,但和前一节一样的是,这里也是和之前单独的activiti没什么区别,因此也不多说.我们先看看列表页面以及对应的代码,然后在一步步说明点击启动按钮时如何调用自定 ...

  10. tkprof

    http://blog.csdn.net/pan_tian/article/details/7677338 需要调整的语句符合以下几点: (1).CPU占用过多 (2).Parse,Execute,F ...