zoukankan      html  css  js  c++  java
  • ML 徒手系列 SVM

    Lagrange乘子法中,介绍了如何构建及如何使用对偶函数,对目标问题进行求解。

    这一章利用L乘子法对SVM进行推导。

    SVM 即支持向量机,是通过求解超平面进行分类的一种算法。所谓的支持向量,是在最大间隔边界上的向量。

    问题来源: 

    如何求解上图中红色线的参数:W b

    红色线可表示为: 

    点到直线的距离:

    在此以直线为分界线是为了可视化,实际当中是超平面。

    此时样本可表示为:

    得支持向量到超平面距离之和:(支持向量为两黑色线上的样本)

    对样本值做标记:

    问题:为何不等式选择的右侧值为1或-1》》》不等式可以通过缩放w b的方式改变最终值》》》

    此处选择1或-1是为了计算方便,并不影响最终的结果。

    通过(1)式构建Lagrange乘子:

      实质是求:

      化成求:

      加入平方项和系数,是为了求导数方便。

      Lagrange乘子法:

      

      对固定的w b 均有:

      加入min,问题化成:

      

      上述的对偶函数:

      对(4)式右侧进行求解,结合(2)分别对w b求偏导:

      将(5)(6)(7)代入(2)式:

      此时问题化成:

      此时的任务是求解(7)式右侧。

      (7)式可以使用SMO算法进行求解:

      在α的m(总共有m个样本点)个值中选取两个:

      固定除这两个的其他α值。

      

      将此条件代入到(7)式,求关于这两个α的极值。

      得到α值后,与之前的条件进行对比,得到支持向量以及α所有值。代入条件得到w b。

      SMO具体细节,下次再总结

    带松弛因子的SVM:

      原理同上述讲解,上述是线性支持可分支持向量机。只是此时加入了其他的约束条件。

      此时可以允许一定的错误分类。

    核函数:

      使用核函数可以将原始输入空间映射到新的特征空间没从而使得原来不可分的样本变得可分。

      核函数的选择是SVM变得复杂的又一个因素。

      常用的核函数:

        线性核、高斯核、拉普拉斯核。高斯核用的相对较多。

      原来的不等式约束变成:

      原来的max:

        变成:

        

      核函数k:

      核函数代替了原来简单的变量。

    hinge loss:

      对于带松弛因子的SVM,使用对偶函数求极值的方法不易直接求解。使用hinge替代损失函数:

      此时


      变成:

        

      对于多分类时,使用hinge loss更为方便。

  • 相关阅读:
    克隆节点及添加属性节点
    元素属性的添加删除(原生js)
    清浮动方法
    css样式获取及兼容性(原生js)
    js基础---数据类型转换
    js基础---数字日期及运算
    js基础---object对象
    input询问键盘输入超时自动跳过选择默认值
    xpath定位
    selenium报错问题解决方法
  • 原文地址:https://www.cnblogs.com/wangxiu/p/5663140.html
Copyright © 2011-2022 走看看