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)
  • 相关阅读:
    HDU 5492 Find a path
    codeforce gym 100548H The Problem to Make You Happy
    Topcoder SRM 144 Lottery
    codeforce 165E Compatible Numbers
    codeforce gym 100307H Hack Protection
    区间DP总结
    UESTC 1321 柱爷的恋爱 (区间DP)
    HDU 4283 You Are the One (区间DP)
    HDU 2476 String painter (区间DP)
    UESTC 426 Food Delivery (区间DP)
  • 原文地址:https://www.cnblogs.com/hichens/p/11864493.html
Copyright © 2011-2022 走看看