关于SVM的理解

本文参考支持向量机通俗导论内容

SVM到底是啥

support vecttor machine,比如在二维平面上,要把一个东西分成两类,SVM就是平面上的一条直线,并且在这两类的正中间,离两边一样远。换句话说,学习策略是把间隔最大化,从而得到凸二次规划问题的解(虽然不是很理解,但是凸问题应该是比较好求解)

分类标准 logistic regression

  • 线性分类器:x表示数据,y表示类别,分类器则需要在n维找到一个超平面hyper plane,超平面的方程就是W.T
  • 也就是 W.T.dot(x) + b = 0

(令人震惊w居然是超平面的方程)

逻辑回归

  • 逻辑回归就是从特征里面学到一个0/1的分类模型
  • 模型的线性组合作为自变量,取值范围是负无穷到正无穷,所以使用logistic函数(竟然就是si
    moid函数把他们投影到(0,1)上面,得到的值就是y = 1的概率
  • 线性分类器如果把分类的两类改成 -1和1(只是为了方便选了这个数字),其实就是把wx加了b
  • 这时候的点的位置可以用 f(x) = wx + b表示,如果f(x)等于0,那么这个点在超平面上,如果大于0就是在1的类型里,小于0在-1的类型里
  • 这时候问题变成了寻找间隔最大的超平面

function margin,geometrical margin

函数距离

  • 当平面上的点是 wx+b = 0 确定了以后, wx+b的绝对值就是点x到超平面的距离
  • 同时 wx+b 的符号和 y(分类标签)的符号对比,如果一致的话是一个类别,不一致的话是另一个 -> y(wx+ b)的正负来表示分类的正确与否 (也就是两个东西同号得正分类正确)
  • 引出函数间隔的定义(这里的y是乘上对应类别的y,所以能得到绝对值)

function margin
在训练集中,所有点到超平面的距离的最小点就是function margin

几何距离

  • 但是如果单纯这么评定,当w和b成比例改变的时候,函数间隔也会改变,所以还需要几何间隔
    function margin
    上面的式子乘以y(对应类别的标签)就可以得到绝对值了。

也就是说几何margin的主要部分就是把之前的内容除了一个w的范数,变成了标准化之后的长度

最大间隔分类器 max margin classifier

对于一组数据来说,超平面和数据点的距离越大,这个数据的分类确信度(confidence)就越高

  • 最大的间距的目标函数即: max\gama, 其中gama是比所有其他间隔都短的函数间隔
  • 如果让最小的函数间隔等于1(为了方便计算),然后求几何间隔,可以得知需要的目标函数变为最大化 1/||w||,其中w是超平面

深入SVM

线性可分和不可分

原始问题和对偶问题duality

  • 之前的目标函数是 1/||w||,所以求这个的最大值,就是求1/2*||w||^2的最小值(这里求最大值就是求倒数的最小值,然后1/2和平方都是为了方便加的)
  • 目标函数变成二次的,约束条件是线性的,凸二次问题,可以用QP(一个写的差不多的包) -> 目标最优的时候loss
  • 由于这个问题的结构,可以转换成对偶问题求解
    • 给每一个约束条件加上一个拉格朗日乘子 alpha
    • 把这个融合进入目标函数里面
      2_3
    • 当所有的约束条件都满足的时候,目标函数的结果就是之前需要求的目标函数。
    • 再对这个目标函数(新的)求最小值,得到的结果就是本来需要求的最小值
      2_5
    • 最后,因为上面的问题不是很好求解,把它的max和min交换了一下,先求所有的间隔的最小值,然后再求这里面alpha条件可以满足的最大值,这两个问题就是对偶问题
      2_6
    • d <= p ,在某些条件满足的情况下这两个值相等,这时候求出来对偶问题就可以求出来原始问题的解
  • 转换对偶问题的原因:
    • 对偶问题更容易求解
    • 可以引入核函数,这样可以直接引入非线性问题

K.K.T条件

  • 上一段说的,满足对偶问题的解等价的条件就是KKT条件
  • KTT条件的意义:非线性规划问题(nonlinear processing)能有最优化解法的充要条件
  • 这部分没有写证明,但是上面的求最值的问题可以被证明是满足KKT条件的问题,所以可以用解决对偶问题的方式来求解。

对偶问题的求解步骤

参考内容