极端学习机学习之路----svm的推导过程(精简版)

   参考faturo的《SVM入门精品系列讲解目录》和一些别的文档整理而成。

       http://www.matlabsky.com/thread-10317-1-1.html

 

简单来说svm(支持向量机)就是一个分类器,假设有很多点(这些点可以是二维的,也可以使三维空间,甚至是多维的),然后我们要找到一个面(超平面,hyper plane)把这些点分隔开,这个面用下面函数表示:

g(x)=wx+b

        我们可以取阈值为0,这样当有一个样本xi需要判别的时候,我们就看g(xi)的值。若g(xi)>0,就判别为类别C1,若g(xi)<0,则判别为类别C2(等于的时候我们就拒绝判断)。此时也等价于给函数g(x)附加一个符号函数sgn(),即f(x)=sgn [g(x)]是我们真正的判别函数。

    注:1x是样本的向量表示,一般要列向量,如果是行向量则要加上转置。

2、并不局限于二维的情况,在n维空间中仍然可以使用这个表达式,只是式中的w成为了n维向量,这里的w严格的说也应该是转置的形式,为了表示起来方便简洁,以下均不区别列向量和它的转置。

 

如何去确定这个分类面,则如何找个这个函数?这样要引入一个概念:分类间隔。在进行文本分类的时候,每一个样本由一个向量(特征向量)和一个标记(标示属于哪个类别)组成。如下:

Di=(xi,yi)

    注:xi就是文本向量(维数很高),yi就是分类标记。

  在二元的线性分类中,这个表示分类的标记只有两个值,1-1(用来表示属于还是不属于这个类)。有了这种表示法,我们就可以定义一个样本点到某个超平面的间隔:

δi=yi(wxi+b)

δi=yi(wxi+b)=|g(x)|

     现在把wb进行一下归一化,即用w/||w||b/||w||分别代替原来的wb,那么间隔就可以写成:

 

       注: ||w||叫做向量w的范数,范数是对向量长度的一种度量。我们常说的向量长度其实指的是它的2-范数,范数最一般的表示形式为p-范数,可以写成如下表达式

向量w=(w1,w2, w3,…… wn)

它的p-范数为 

 

        当用归一化的w和b代替原值之后的间隔有一个专门的名称,叫做几何间隔,几何间隔所表示的正是点到超平面的欧氏距离。下面这张图更加直观的展示出了几何间隔的现实含义:

极端学习机学习之路----svm的推导过程(精简版)_第1张图片

 

         H是分类面,而H1H2是平行于H,且过离H最近的两类样本的直线,H1HH2H之间的距离就是几何间隔。几何间隔与样本的误分次数间存在关系:

         我们的目的是要减少误分次数,即要上面式子的上界变小,即几何间隔δ要越大越好。因为几何间隔δ

 

   在通常情况下,我们会固定几何间隔(例如固定为1),寻找最小的||w||。用式子表示如下:

min||w||

   但实际上对这个目标,我们常常使用另外一个完全等价的目标函数来代替,那就是:

       实际上,让 w=0 便能得到最优解,但是这样所有的点都会跑到中间,而让分类间隔最大,并不符合要求,所以我们要加入一些约束条件:

       怎么求解一个带有不等式约束条件的最优化问题?我们的目标就是要确定 w ,怎样的 w 才是最优的,其实 w 可以表示为样本的某种组合:

w=α1x1+α2x2+…+αnxn

式子中的αi是一个一个的数(在严格的证明过程中,这些α被称为拉格朗日乘子),而xi是样本点,因而是向量,n就是总样本点的个数。因此g(x)的表达式严格的形式应该是:

g(x)=<w,x>+b

    注:<w,x>表示wx的内积,也叫点积

其实w不仅跟样本点的位置有关,还跟样本的类别有关(也就是和样本的标签有关)。因此用下面这个式子表示才算完整:

w=α1y1x1+α2y2x2+…+αnynxn

     式子也可以用求和符号简写一下:

极端学习机学习之路----svm的推导过程(精简版)_第2张图片

          算到这里,我们要引入核函数的概念。因为我们想找一个线性可分的分界面,而往往给的数据都是线性不可分的,事实证明,经过变换,把数据从低维空间映射到高维空间时,数据就能找到一个线性可分的面,这就要找到一个核函数,把 x 映射到高维的空间。

    如果有这样的函数,那么当给了一个低维空间的输入x以后,

g(x)=K(w,x)+b

f(x’)=<w’,x’>+b

    找到核函数后,g(x)的形式可以表示为:

        因为可能会存在噪声,可以我们要引入一个松弛变量,即允许:

       因为松弛变量是非负的,因此最终的结果是要求间隔可以比 1 小。因为允许噪声的存在,所以分类器的误差也会变大,这个误差用下面式子衡量:

        把误差加入到目标函数的时候,需要一个惩罚因子 C ,原来的优化问题就变成了下面这样:

        我们回顾一下整个过程:分类机是将最大间隔法求解最优分类面的最优化问题转化为其对偶问题,即通过求解其最小误差。随后引入松弛变量和惩罚因子来解决非线性分类问题,并且允许一定的分类错误(软间隔),最终得到非线性软间隔的标准的 C- 支持向量机 (C-SVC)

    把一个复杂的最优化问题的求解简化为对原有样本数据的内积运算。只需选择适当的核函数及其参数、惩罚因子。

 

 

 

 

 

     

你可能感兴趣的:(极端学习机学习之路----svm的推导过程(精简版))