• svm支持向量机系列(2) -- 对偶支持向量机


    1、课程主要内容

      介绍向量机的对偶形式,上次讲述了线性支持向量机,找到可以正确分类中最“胖”的那条分隔面,越胖分类器就越健壮。

      

      对偶支持向量机是线性支持向量机的另外一种形式。

    2、原始SVM的复习,使用对偶形式的SVM的动机或者好处

      非线性支持向量机的原始问题:

      

      通过对原有数据的非线性变换后替换原有的的x到z空间上,从而得到非线性的支持向量机,其解法也是使用二次规划:

      

      其中d为w的维度,如果存在一个线性的支持向量机后配合非线性变换Φ(x)就可以得到一个非线性的支持向量机。

      为什么要这么做?通过边界可以控制复杂度,同时可以得到一个非线性的分类器;

      

      但是在使用二次归化算法时,w的维度是和数据的特征的个数有关系的,如果数据的特征比较多或者是无无限多的那该怎么办?

       

      目标:

      

      将SVM的变量与w维度有关的变换到只与数据输入量有关:

      

      基本工具就是拉格朗日乘子法,解决有约束条件下的优化问题。在正则化时,其基本问题如下:

      

      在约束条件下进行求解最小的Ein时,采用拉格朗日乘子法将约束条件加入到优化目标函数中,通过

      (1) 在优化过程中检查优化状态达到限制条件C与λ的对等

      (2) 解最优化问题时通过给定λ来代替C使得优化算法的易实现性

      

      但是在对偶形式的支持向量机中,我们不把λ作为已知量,而是作为一个未知量看待,这是与正则化的区别。思考一下λ的数量,由于原始问题中的限制条件是由每个点被正确分类所限制的,因此在数据数据规模为N时,限制条件的个数为N,因此λ的数量也是N个,为了方便我们可以建立一个N维 的向量保存每一个λ。

       通过拉格朗日函数将原始的带有约束条件的SVM转化成没有约束条件的SVM:

      原始的SVM问题即带有约束条件的SVM问题:

      

      通过使用拉格朗日函数可以得到下面的函数:

      

      函数说明:

      第一部分:最小化目标;

      第二部分:将N个限制条件合在一起加入到函数中。

      假设SVM问题如下:

      

      该表达式的意思:在给定的w和b的条件下计算拉格朗日函数的最大值,然后通过调整w和b在这些最大值中挑选一个最小的最为SVM的优化解。这样做合理吗?

      

      (1)、当w和b不满足约束条件时,即

      不满足,那么拉格朗日函数中的后面的求和项每一项都是正的,那么第二项的最大值必然是无穷大;

      

      (2) 当w和b满足条件时,拉格朗日函数的求和项全部都是负的,因此其最大值必然为0,此时拉格朗日函数的最后的结果还是原有的优化目标。

      综上两个条件可知,整个拉格朗日函数最的最优结果选择的是最小min因此在w和b不满足时为无穷大,在满足时为原有的优化目标,这样就把限制条件隐藏到了整个函数内,达到了从有明显的限制到隐藏的限制的目的。

      3、 拉格朗日的进一步优化

        

      由于对α的最大化操作,因此在一个w和b确定下,对于一个固定的α都有上式必然成立。同样对于右侧的式子来说,左侧的式子大于右侧的式子那么必然也大于右侧式子的最大值,因此便有了以下的结论:

      

      有趣的是min和max换了位置,这个问题就是拉格朗日对偶问题,导出了原有目标优化的一个下限值。

      原有SVM的等价形式与拉格朗日对偶形式的SVM之间的关系:

      

      (1) 弱对偶关系

      (2) 

      当两者关系是相等时表示是强对偶,但是对于二次规划问题来说,满足以上三个条件:凸优化,数据线性可分有解,线性的限制条件时就是限制条件满足,此时也是强对偶关系,即可以通过解右侧的函数达到左侧函数的目标。

      对偶形式的SVM的进一步简化:

      

      对于这个问题,首先考虑min最小化的部分,此部分针对w和b进行求解,当某一组w和b为解时,根据梯度下降可知在解处拉格朗日函数对w和b的微分值都为0,那么有:

      

      此时如果将上述推导的拉格朗日函数关于b的微分作为一个限制条件加入到优化函数中,必然不会影响原有解,同时对第二项进行展开可以得到一个优化条件项,此时就把b消除掉:

      

      相同的套路针对w的微分,得到w关于α,x,y的表达式,同样将该表达式作为条件带入到原有的表达式中

      

      得到:

      

      KKT 优化条件:

      (1) 数据可分

      (2) 满足对偶乘子的条件

      (3) 对偶的内在条件,通过微分求出的

      (4) 原始条件的内在条件,即与乘子相乘后的值必须为0,那么乘子的值为0,要不后面的表达式为0,当乘子不为0时,那么后面的表达式就是0,那么表示该数据点到分隔面的距离为1,也就是到分隔面的最小距离,此时该点就是支持向量

      

      4、 对偶形式的SVM的解法

      经过上面的推导可以得出对偶形式的SVM为:

      

      那么在对以上的形式做出变化,即由最大化变为最小化,当式子大于0时可以采用取倒数,在式子小于0 时可以取负号,于是整个式子可以变为:

      

      同时把限制条件拿出来单列出来,同时不考虑w和a的关系,此条件为隐藏条件,不考虑,此时共有N+1个条件,N个a变量;

      使用二次规划来解该问题四个二次归化参数的对应关系:

      

      计算过程中的问题:

      Q矩阵会很大:

      

      因此需要一个专有的SVM解法程序:

      

      因此优先选择专用的解法程序。

    5、找到w和b

      根据KKT优化准则:

      

      对于w来说KKT条件的第三条可以i知道w和a的关系:

      

      那么怎么计算b,从上面的KKT条件可知,,知道w后可以根据KKT的第一条准则:

      

      可以计算出一个关于b的一个范围,但是不是定值,因此此条件不能用。对于准则4,只有有一个α>0,那么可以得到:

      

      便可以通过此式得到:

      

      推导此式用到了1/y = y,因为y = {-1, +1};同时该点就是支持向量,他就在那个胖胖的边界上。

      6、关于支持向量

      上面在解b的时候推导出:

      

      也就是说输入向量的第n个数据就是一个支持向量,此时我们可以根据α的取值来找到那些真正的支持向量:在边界上同时α>0,一个点可能在边界上但是α=0那么这个点就不是支持向量。

      

      支持向量的作用:

      

      

      SVM与PLA之间的关系

      

     7、下一讲

      

      通过对偶形式的SVM将d个变量变成了N个变量,看似与d 无关了,但是在计算Q矩阵时zn、zm都是d维的,那么这样计算还是与d有关,那么怎么才能与d无关,只能在Q矩阵的计算方法上做改进,下一讲告诉你。

  • 相关阅读:
    文件的类型
    读取文件,并按原格式输出文件内容的三种方式
    react hook代码框架
    器具的行为模式
    设计模式
    cpu 内存 机器语言 汇编 高级语言 平台之间的关系
    操作系统之内存
    操作系统之文件
    操作系统之IO
    七层模型之应用层
  • 原文地址:https://www.cnblogs.com/daguankele/p/6375358.html
Copyright © 2020-2023  润新知