zoukankan      html  css  js  c++  java
  • 线性可分支持向量机与软间隔最大化--SVM(2)

    线性可分支持向量机与软间隔最大化--SVM


    ### 给定线性可分的数据集 假设输入空间(特征向量)为![](https://img2018.cnblogs.com/blog/1612966/201911/1612966-20191113084534799-827087946.png),输出空间为![](https://img2018.cnblogs.com/blog/1612966/201911/1612966-20191113084658469-1161915561.png)。 输入![](https://img2018.cnblogs.com/blog/1612966/201911/1612966-20191113084628419-1690349867.png) 表示实例的特征向量,对应于输入空间的点; 输出![](https://img2018.cnblogs.com/blog/1612966/201911/1612966-20191113084720168-395217416.png) 表示示例的类别。
    我们说可以通过**间隔最大化**或者等价的求出相应的**凸二次规划问题**得到的**分离超平面** ![](https://img2018.cnblogs.com/blog/1612966/201911/1612966-20191113145531524-1277316451.png) 以及决策函数: ![](https://img2018.cnblogs.com/blog/1612966/201911/1612966-20191113145640348-625490035.png) 但是,上述的解决方法对于下面的数据却不是很友好, 例如,下图中黄色的点不满足间隔大于等于1的条件
    ![](https://img2018.cnblogs.com/blog/1612966/201911/1612966-20191115123540352-282703492.png)

    这样的数据集不是线性可分的, 但是去除少量的异常点之后,剩下的点都是线性可分的, 因此, 我们称这样的数据集是近似线性可分的
    对于近似线性可分的数据集,我们引入了松弛变量,使得函数间隔加上松弛变量大于等于1。这样就得到了下面的解决方案:

    ![](https://img2018.cnblogs.com/blog/1612966/201911/1612966-20191115092333841-1791870743.png)
    其中,每个样本点都对应一个松弛变量, C > 0 称为**惩罚参数**。C越大,对误分类的点的惩罚越大。 这个解决方案旨在使得**间隔最大化的同时减少误分类个数**。下图是C对分类的影响,左图是大C, 右图是小C:
    ![](https://img2018.cnblogs.com/blog/1612966/201911/1612966-20191115091950272-1659216434.png)

    可以证明w是唯一的, 但是b不唯一,而是存在一个区间


    ### 下面来解决这个问题 首先引入拉格朗日函数(Lagrange Function):
    ![](https://img2018.cnblogs.com/blog/1612966/201911/1612966-20191115092625181-1234020238.png)

    他的对偶问题(参考拉格朗日对偶性(Lagrange duality))是极大极小问题, 首先求。对求导,解法如下:

    ![](https://img2018.cnblogs.com/blog/1612966/201911/1612966-20191115093758117-1708053975.png)
    代入得到:
    ![](https://img2018.cnblogs.com/blog/1612966/201911/1612966-20191115094815186-717315385.png)
    问题转化为:
    ![](https://img2018.cnblogs.com/blog/1612966/201911/1612966-20191115095105841-585759787.png)
    怎么求最优的w*, b*呢? 我们来看,原问题的KKT条件如下:
    ![](https://img2018.cnblogs.com/blog/1612966/201911/1612966-20191115124638317-1342895612.png)
    根据KKT条件的性质可以知道(参考[拉格朗日乘子(Lagrange multify)和KKT条件](https://www.cnblogs.com/hichens/p/11863780.html)):
    ![](https://img2018.cnblogs.com/blog/1612966/201911/1612966-20191119104720538-1512801861.png)
    所以可以求得![](https://img2018.cnblogs.com/blog/1612966/201911/1612966-20191115130601535-2099135497.png):
    ![](https://img2018.cnblogs.com/blog/1612966/201911/1612966-20191115130747435-519339109.png)

    ## 综上, 引入松弛变量后线性支持向量机算法为: .
    ![](https://img2018.cnblogs.com/blog/1612966/201911/1612966-20191119103343825-1387843165.png)

    *我们引入的松弛变量去哪里了呢?为什么算法中没有了?
    其实, 松弛变量在通过惩罚参数C隐式的作用。
    我们可以改变C值,看看改变C哪些变量会随着改变。
    增大C,由知, 就更有可能大于0, 再根据,松弛变量取0就更简单, 这样就没有约束作用了。对整个数据集来说相当于是小的约束作用。
    反之也可推出约束作用更强。
    可以用这张图来解释:

    ![](https://img2018.cnblogs.com/blog/1612966/201911/1612966-20191119105307199-625643595.png)
  • 相关阅读:
    JVM-Java程序性能监控-初级篇
    一段获取app性能指标的py脚本
    一段从TXT导入excel的py脚本
    matplotlib根据Y轴数量伸缩画图的py脚本
    jsonpath读取json数据格式公用方法!!!
    python安装插件包注意事项
    Jenkins持续集成
    Jenkins简介&邮箱配置
    unittest框架扩展(基于代码驱动)自动化-下
    unittest框架扩展(自动生成用例)自动化-上
  • 原文地址:https://www.cnblogs.com/hichens/p/11864493.html
Copyright © 2011-2022 走看看