• SVM


     
     
    KKT推导
    以下是详细步骤:
    SVM的目标问题:

    应用拉格朗日乘子法得
    l(omega ,b,xi,alpha ,r )=frac{1}{2} omega^{T}omega+Csum_{i=1}^{m}{xi_i} -sum_{i=1}^{m}{alpha_i[y^{(i)}(omega^T x^{(i)}+b)-1+xi_i ]} - sum_{i=1}^{m}{r_ixi_i}
    那么对待优化变量求偏微分
    frac{partial l}{partialomega} =0 Rightarrow w=sum_{i=1}^{m}{alpha_i y^{(i)} x^{(i)} } (1)
    frac{partial l}{partial b} =0 Rightarrow sum_{i=1}^{m}{alpha_i y^{(i)} }  = 0 (2)
    frac{partial l}{partialxi_{i}} =0 Rightarrow alpha_{i}=C-r_{i} (3)
    根据KKT互补条件,
    alpha_i[y^{(i)}(omega^T x^{(i)}+b)-1+xi_i ]=0 (4)
    r_{i}xi_{i}=0 (5)
    所以,将(3) (4) (5)带入以下式子
    alpha_{i}=0 Rightarrow r_{i}=C, xi_{i}=0 Rightarrow y^{(i)}(omega^T x^{(i)}+b) geq  1,几何间距>=1样本的xi_{i}=0
    0<alpha_{i}<C Rightarrow r_{i}>0 , xi_{i}=0 Rightarrow y^{(i)}(omega^T x^{(i)}+b)=1-xi_{i} = 1,几何间距为1的样本,也就是支持向量的xi_{i}=0
    alpha_{i}=C Rightarrow r_{i}=0, xi_{i}geq 0 Rightarrow y^{(i)}(omega^T x^{(i)}+b)=1-xi_{i}leq 1只有样本与决策边界的几何间距(geometric margin)小于1时,xi_{i}>0才成立。而且他们之间的等式关系为xi_{i}=1-y^{(i)}(omega^T x^{(i)}+b)
     
    那么满足KKT条件的,我们说如果一个点满足KKT条件,那么它就不需要调整,一旦不满足,就需要调整。由上可知,不满足KKT条件的也有三种情况: 
    (1)yiui1αi<C
    (2)yiui1αi>0
    (3)yiui1αi=0αi=C
     
     
    ------------------------
     

    SVN原理比较复杂,但是思想很简单,一句话概括,就是通过某种核函数,将数据在高维空间里寻找一个最优超平面,能够将两类数据分开。

     

     

    1.理解什么是对偶问题

     

     

    ————————————————————

    • SVM的目的是要找到一个线性分类的最佳超平面 f(x)=xw
      T
      +b=0
      f(x)=xwT+b=0
      。求 w
      和 b
      b
    • 首先通过两个分类的最近点,找到f(x)
      f(x)的约束条件。
    • 有了约束条件,就可以通过拉格朗日乘子法和KKT条件来求解,这时,问题变成了求拉格朗日乘子α
      i

      αi 和 b
      b。
    • 对于异常点的情况,加入松弛变量ξ
      ξ来处理。
    • 使用SMO来求拉格朗日乘子α
      i

      αi和b
      b。这时,我们会发现有些α
      i
      =0
      αi=0
      ,这些点就可以不用在分类器中考虑了。
    • 惊喜! 不用求w
      w了,可以使用拉格朗日乘子α
      i

      αi和b
      b作为分类器的参数。
    • 非线性分类的问题:映射到高维度、使用核函数。

    ————————————————————

     

     

    • Q: y是否可以是其它非{-1, 1}的值?
      A: 将y值定义为{-1, 1}是最简化的方案。你的分类可以是cat和dog,只要将cat对应到1, dog对应到-1就可以了。你也可以将y值定义为其它数比如: -2, 2或者2, 3之类的,但是这样就需要修改超平面函数和约束条件,增加了没必要的繁琐,实际上和y值定义为{-1, 1}是等价的。
    • Q: 如果两组数据里的太近或者太远,是不是可能就找不到xw
      T
      +b=1
      xwT+b=1
       xw
      T
      +b=−1
      xwT+b=−1
      的这两个点?
      A: 不会。假设可以找到x
      i
      w
      T
      +b=c
      xiwT+b=c 和 x
      j
      w
      T
      +b=−c
      xjwT+b=−c. c>0andc<>1
      c>0
      andc<>1
      。其超平面函数为xw
      T
      +b=0
      xwT+b=0
      .
      上面公式左右同时除以c, 则:
      x
      i
      w
      T
      /c+b/c=1
      xiwT/c+b/c=1

      x
      j
      w
      T
      /c+b/c=−1
      xjwT/c+b/c=−1

      令:
      w

      =w/c
      w′=w/c
      b

      =b/c
      b′=b/c
      有:
      x
      i
      w
      T
      +b

      =1
      xiw′T+b′=1

      x
      j
      w
      T
      +b

      =−1
      xjw′T+b′=−1

      可以找到超平面函数:
      xw
      T
      +b

      =0
      xwT+b′=0

      因此,总是可以找到y是{-1, 1}的超平面,如果有的话。

     

    ———————————————————————

    输入参数:

    • 参数C
      C,越大表明影响越严重。C
      C应该一个大于0值。其实C
      C也不能太小,太小了就约束α
      i

      αi了,比如200。
    • 参数ξ
      ξ,对所有样本数据起效的松弛变量,比如:0.0001。
      具体证明请看:

    ————————————————————————

    对一个数据点进行分类,当超平面离数据点的“间隔”越大,分类的确信度(confidence)也越大。所以,为了使得分类的确信度尽量高,需要让所选择的超平面能够最大化这个“间隔”值。

    ———————————————————

    转换到这种形式以后是不是很像上节说到的KKT条件下的优化问题了,就是这个。但是有一个问题,我们说上节的KKT是在凸函数下使用的,那么这里的目标函数是不是呢?答案是的,想想

    W

    T

    W

    ,函数乘出来应该很单一,不能有很多极点,当然也也可以数学证明是的。

    ———————————————————

    行文至此,我相信,SVM理解到了一定程度后,是的确能在脑海里从头至尾推导出相关公式的,最初分类函数,最大化分类间隔,max1/||w||,min1/2||w||^2,凸二次规划,拉格朗日函数,转化为对偶问题,SMO算法,都为寻找一个最优解,一个最优分类平面。一步步梳理下来,为什么这样那样,太多东西可以追

    ———————————————————

     其中 

     

     是一个参数,用于控制目标函数中两项(“寻找 margin 最大的超平面”和“保证数据点偏差量最小”)之间的权重。

    ———————————————————

    问题:

    松弛变量中 ri$求和是怎么来的

    ———————————————————

     原始问题通过满足KKT条件,已经转化成了对偶问题。而求解这个对偶学习问题,分为3个步骤:首先要让L(w,b,a) 关于 w 和 b 最小化,然后求对的极大,最后利用SMO算法求解对偶问题中的拉格朗日乘子。

     

  • 相关阅读:
    每天一个linux命令(6):mv命令
    每天一个linux命令(5):rm 命令
    每天一个linux命令(4):mkdir命令
    每天一个linux命令(3):pwd命令
    每天一个linux命令(2):cd命令
    每天一个linux命令(1):ls命令
    Linux下svn命令详解
    Linux下SVN安装配置
    SVN命令使用详解
    分布式Web服务器架构
  • 原文地址:https://www.cnblogs.com/wskgjmhh/p/7685209.html
Copyright © 2020-2023  润新知