支持向量机

来源:互联网 发布:简谱制作软件安卓版 编辑:程序博客网 时间:2024/06/07 15:10

支持向量机被认为是机器学习里面最复杂的算法之一,个人感觉是其数学推导以及运行机制多而杂。今天刚刚学习完基础的理论推导,写一个笔记作为备忘:

  • 支持向量机用到的数学知识
  • 支持向量机要解决的问题
  • 距离与数据的定义
  • 构造求解目标函数
  • 支持向量的作用
  • 精度改进
  • 核变换

支持向量机用到的数学知识

  • 点到平面的距离公式
  • 拉格朗日乘数法

点到平面的距离公式

  中学阶段学习过相关的知识,现在的应用只不过是把原来的二维推广到多维,计算的方法是一个样的。下面先来看一下二维空间里面的计算方法:
  这里写图片描述
:公式计算第二行有个错误,|n|/|n|中分子应该是n。我们现在推广到多维中:
  
   Y = W^T + b (W^T 代表w的转置,同样也是平面的法向量)。根据上面的推断,我们可以直接写出点到面的距离:
                这里写图片描述



拉格朗日乘数法

   拉格朗日乘子法主要用于解决约束优化问题,它的基本思想就是通过引入拉格朗日乘子来将含有n个变量和k个约束条件的约束优化问题转化为含有(n+k)个变量的无约束优化问题。拉格朗日乘子背后的数学意义是其为约束方程梯度线性组合中每个向量的系数。

  举例来看
  求函数在满足下的条件极值,可以转化为函数的无条件极值问题。我们可以画图来辅助思考。
    
          这里写图片描述
    
  绿线标出的是约束g(x,y)=c的点的轨迹。蓝线是f(x,y)的等高线。箭头表示斜率,和等高线的法线平行。
  从图上可以直观地看到在最优解处,f和g的斜率平行。
  ▽[f(x,y)+λ(g(x,y)−1)]=0, λ≠0
  一旦求出λ的值,将其套入下式,易求在无约束极值和极值所对应的点。
  F(x,y)=f(x,y)+λ(g(x,y)−c)
  新方程F(x,y)在达到极值时与f(x,y)相等,因为F(x,y)达到极值g(x,y)−c,上述式子取得极小值时其导数为0,即▽f(x)+▽∑λigi(x)=0,  也就是说f(x)和g(x)的梯度共线。
 
  改进
  初始的拉格朗日乘子法均为等式约束优化问题,但等式约束并不足以描述人们面临的问题,不等式约束比等式约束更为常见,大部分实际问题的约束都是不超过多少时间,不超过多少人力,不超过多少成本等等。所以有几个科学家拓展了拉格朗日乘数法,增加了KKT条件之后便可以用拉格朗日乘数法来求解不等式约束的优化问题了。
  KKT
  初始条件:
  minimize f(x)
  subject to ai(x) = 0 (for i =1,2,3…)
       cj(x) >= 0 (for i =1,2,3…)
  
  限制条件:
  如果x*是限制优化问题的局部最小解

  • ai(x*) = 0 (for i =1,2,3…)
  • cj(x*) >= 0 (for i =1,2,3…)

  • 存在Lagerange multipliers lamda(i)* 和 u(j)* 使得

      这里写图片描述

  • u(j)* cj(x*) =0
  • u(j)* >= 0


支持向量机分析

支持向量机最后生成一个决策平面,两侧的虚线表示判断边界。最终得到一个最大的决策区域。
这里写图片描述

数据标签定义
数据集:(X1,Y1)(X2,Y2)… (Xn,Yn)
Y为样本的类别: 当X为正例时候 Y = +1 当X为负例时候 Y = -1
决策方程(新的变换函数我们后文讨论):
        这里写图片描述
yi * y(xi) > 0

我们通过形变可以简化点到决策平面的距离:
          这里写图片描述
对于上文中提到的决策边界是恒大于零的,我们一定可以通过放缩W让决策平面函数恒大于1。
  优化目标
      这里写图片描述
注: 我们首先看一下内部的最小化过程,这里我们寻找的是距离决策平面最小的点。我们想寻找到一个合适的决策平面让这个平面距离我们找到的最近的样本点的距离有个最大值。这样我们会得到一个最宽的决策区域。(也就是虚线的宽度)
  而上文中我们知道决策平面函数恒大于1,而对于决策平面我们想要的是最小值这个时候,我们直接取到1就可以啦。我们现在可以将优化目标函数简化为
            这里写图片描述

这个时候我们就有了新的目标函数
        这里写图片描述

对于有约束条件的最值问题,我们很显然要是用拉格朗日乘数法来解决。对照前文提到的KTT条件我们对目标函数和约束条件进行修改。修改之后的目标函数为:
  这里写图片描述
  
对于新目标函数的第一项,我们修改这样的目的是为了去掉绝对值和约去求导的时候的2项。注:这里刚开始的理解是有问题的,当前的问题是极小极大问题。但是我们求解的时候是从内层想外层依次求解,本式对alpha求解比较困难,才使用了对偶的办法
  
          这里写图片描述
  
注:但是我们第一步最大化alpha的时候,无法用拉格朗日最小化的思想解决。所以根据对偶原则(这个地方还没有整清楚,什么情况下对偶。后面随着学习在深化)
  
我们就有新的优化目标函数的方法:
    这里写图片描述

我们根据拉格朗日乘子法运算规则分别对w和b求偏导,并等于0.得到两个w和b的结果公式

            这里写图片描述

并将结果带入原始的新目标函数我们完成了第一部分的求解。最终计算结果为:
  
      这里写图片描述
  
我们继续对alpha求极大值,我们转换为求极小值:
  
这里写图片描述
  
按照前文的方法再次求一次。得到alpha的值。将所求解的结果带入公式得到w和b。求解成功。



支持向量分析

  根据上文分析我们在确定这个决策边界的宽度时,是通过不断优化alpha值来解决的。根据运算规则我们发现,当alpha=0是w和b都为零。也就是说对于alpha=0的点对我们决策边界的选取是不起作用的。那么我们的支持向量也就是alpha不为零的点,这些点支撑起了我们的决策边界。而除了这些点其他点对决策的边界的选取是没有作用的。



支持向量机优化(线性不可分)

我们上文提到的求解决策平面的方法比较强硬,在实际的项目中我们的样本数据一定有很多的异常点。如果我们使用这种比较强硬的方式,一定会让我们的决策边界为了迎合这个异常点而产生不好的分类结果。比如下图所示:
      这里写图片描述

为了解决这个问题,我们对原来的函数进行一下修改:
          这里写图片描述
加入一个松弛因子,让决策平面不再大于1。稍微松弛一下。
      这里写图片描述

这里的C就是我们使用支持向量机时要指定的参数。加入C的目的是为了让松弛因子不至于过大。
我们仍然使用拉格朗日乘子法进行函数优化。这里给出的约束条件是通过求偏导得到的。跟上文的相同
      这里写图片描述



核变换

这是支持向量机的最后一部分内容。
我们遇到一些样本的时候是线性不可分的,我们就想着能不能把数据给映射到高纬上就可以分了呢。答案是肯定的(而我们前文提到的fai-x函数就是一个核变换函数),那么怎么进行映射呢?这就是函数的核变换。
我们进行核变换的选取的函数有多种,这里不一一细分。关于核变换的机器学习方面还没有深入研究等到深入研究了再专门来详细的说明一下。

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

推荐文章:http://blog.csdn.net/American199062/article/details/51322852