码迷,mamicode.com
首页 > 其他好文 > 详细

高斯核函数

时间:2017-02-18 11:02:24      阅读:8916      评论:0      收藏:0      [点我收藏+]

标签:连续函数   总结   john   异或   over   数据集   网络   维数   oid   

高斯核函数

所谓径向基函数 (Radial Basis Function 简称 RBF), 就是某种沿径向对称的标量函数。通常定义为空间中任一点x到某一中心xc之间欧氏距离单调函数 , 可记作 k(||x-xc||), 其作用往往是局部的 , 即当x远离xc时函数取值很小。

 

高斯核函数 - 常用公式

最常用的径向基函数是高斯核函数 ,形式为 k(||x-xc||)=exp{- ||x-xc||^2/(2*σ)^2) } 其中xc为核函数中心,σ为函数的宽度参数 , 控制了函数的径向作用范围。

 

核函数简介

 

(1)核函数发展历史
    早在1964年Aizermann等在势函数方法的研究中就将该技术引入到机器学习领域,但是直到1992年Vapnik等利用该技术成功地将线性SVMs推广到非线性SVMs时其潜力才得以充分挖掘。而核函数的理论则更为古老,Mercer定理可以追溯到1909年,再生核希尔伯特空间(ReproducingKernel Hilbert Space, RKHS)研究是在20世纪40年代开始的。

(2)核函数方法原理
    根据模式识别理论,低维空间线性不可分的模式通过非线性映射到高维特征空间则可能实现线性可分,但是如果直接采用这种技术在高维空间进行分类或回归,则存在确定非线性映射函数的形式和参数、特征空间维数等问题,而最大的障碍则是在高维特征空间运算时存在的“维数灾难”。采用核函数技术可以有效地解决这样问题。
    设x,z∈X,X属于R(n)空间,非线性函数Φ实现输入间X到特征空间F的映射,其中F属于R(m),n<<m。根据核函数技术有:

       K(x,z) =<Φ(x),Φ(z) >                (1)
    其中:<, >为内积,K(x,z)为核函数。从式(1)可以看出,核函数将m维高维空间的内积运算转化为n维低维输入空间的核函数计算,从而巧妙地解决了在高维特征空间中计算的“维数灾难”等问题,从而为在高维特征空间解决复杂的分类或回归问题奠定了理论基础。

(3)核函数特点

    核函数方法的广泛应用,与其特点是分不开的:

    1)核函数的引入避免了“维数灾难”,大大减小了计算量。而输入空间的维数n对核函数矩阵无影响,因此,核函数方法可以有效处理高维输入。

    2)无需知道非线性变换函数Φ的形式和参数.

    3)核函数的形式和参数的变化会隐式地改变从输入空间到特征空间的映射,进而对特征空间的性质产生影响,最终改变各种核函数方法的性能。

    4)核函数方法可以和不同的算法相结合,形成多种不同的基于核函数技术的方法,且这两部分的设计可以单独进行,并可以为不同的应用选择不同的核函数和算法。

(4)常见核函数

    核函数的确定并不困难,满足Mercer定理的函数都可以作为核函数。常用的核函数可分为两类,即内积核函数和平移不变核函数,如:
 1)高斯核函数K(x,xi) =exp(-||x-xi||2/2σ2
  2)多项式核函数K(x,xi)=(x·xi+1)^d, d=1,2,…,N; 
  3)感知器核函数K(x,xi) =tanh(βxi+b);
  4)样条核函数K(x,xi) = B2n+1(x-xi)。

(5)核函数方法实施步骤

    核函数方法是一种模块化(Modularity)方法,它可分为核函数设计和算法设计两个部分,具体为:

    1)收集和整理样本,并进行标准化;
    2)选择或构造核函数;
    3)用核函数将样本变换成为核函数矩阵,这一步相当于将输入数据通过非线性函数映射到高维
特征空间;

    4)在特征空间对核函数矩阵实施各种线性算法;

    5)得到输入空间中的非线性模型。

    显然,将样本数据核化成核函数矩阵是核函数方法中的关键。注意到核函数矩阵是l×l的对称矩阵,其中l为样本数。

(6)核函数在模式识别中的应用
    1)新方法。主要用在基于结构风险最小化(Structural Risk Minimization,SRM)的SVM中。

    2)传统方法改造。如核主元分析(kernel PCA)、核主元回归(kernel PCR)、核部分最小二乘法(kernel PLS)、核Fisher判别分析(Kernel Fisher Discriminator, KFD)、核独立主元分析(Kernel Independent Component Analysis,KICA)等,这些方法在模式识别等不同领域的应用中都表现了很好的性能。

 

 

SVM,核函数,Mercer

 

SVM,支持向量机,很神奇的一个东西,能想出用核函数来免去高维变换,直接用低维度的参数带入核函数来等价计算高维度的向量的内积的人真是天才。

Mercer,凡是满足Mercer条件的,都能用于免除变化,而直接利用低纬度的矢量计算高纬度矢量的内积的函数,Mercer定理还说明了我们要求解的问题的对偶形式的函数是凸函数,不存在局部最优解,而只有全局最优解。

而内积,正是SVM求最优化分割面需要用到的。而维度变换,正是SVM用来求解线性不可分的一个手段。而有了核函数,你就可以绕过维度变换,直接利用核函数进行变换求解高纬度的点的内积。

 

 

 

http://www.cnblogs.com/vivounicorn/archive/2010/12/13/1904720.html

 

 

SVM学习——核函数

 

还记得上篇末提到的对于优化问题:

技术分享

                                                                                                          技术分享

                                                                                                                     技术分享

的求解需要计算技术分享这个内积,而如果输入样本线性不可分的话,我们采取的方法是通过技术分享函数映射将输入样本映射到另外一个高维空间并使其线性可分。

         以库克定律为例(http://zh.wikipedia.org/zh-cn/静电力):

一个电量为 技术分享 的点电荷作用于另一个电量为 技术分享 的点电荷,其静电力 技术分享 的大小,可以用方程表达为:

                            技术分享 ,其中,技术分享 是两个点电荷之间的距离,技术分享库仑常数

         显然这个定律无法用线性学习器来表达,看到乘积想到ln函数,对原始形式两边取ln,得到:

技术分享,令技术分享技术分享技术分享技术分享技术分享,那么就得到一个线性学习器:

                                     技术分享

这个过程可以用下图说明:

技术分享

这样就将内积技术分享就变成了技术分享

技术分享可以有两种方法:

         1、先找到这种映射,然后将输入空间中的样本映射到新的空间中,最后在新空间中去求内积技术分享

         2、或者是找到某种方法,它不需要显式的将输入空间中的样本映射到新的空间中而能够在输入空间中直接计算出内积技术分享

         先看第一种方法,以多项式技术分享 为例,对其进行变换,技术分享技术分享技术分享技术分享,得到:

技术分享,也就是说通过把输入空间从二维向四维映射后,样本由线性不可分变成了线性可分,但是这种转化带来的直接问题是维度变高了,这意味着,首先可能导致后续计算变复杂,其次可能出现维度之咒,对于学习器而言就是:特征空间维数可能最终无法计算,而它的泛化能力(学习器对训练样本以外数据的适应性)会随着维度的增长而大大降低,这也违反了“奥坎姆的剃刀”,最终可能会使得内积技术分享无法求出,于是也就失去了这种转化的优势了;

         再看第二种方法,它其实是对输入空间向高维空间的一种隐式映射,它不需要显式的给出那个映射,在输入空间就可以计算技术分享,这就是传说中的核函数方法:

 

定义1:核是一个函数技术分享,对于所有的技术分享满足,技术分享,这里的技术分享为从技术分享到内积特征空间技术分享的映射。

于是输入空间的标准内积就被推广了。

        

         技术分享 什么时候才是核函数呢?

         假设有输入空间技术分享技术分享为对称函数,那么对于所有样本得到下面矩阵:技术分享,显然,这个是个对称矩阵,那么对于对称矩阵一定存在一个正交矩阵,使得技术分享,这里技术分享是包含k的特征值技术分享的对角矩阵,特征值技术分享对应的特征向量为技术分享,其中n为样本数,对输入空间做如下映射技术分享:     

         技术分享

          于是有技术分享,(其中技术分享为特征向量组成的矩阵,技术分享为相应特征值组成的三角矩阵),也就是说K是对应于映射技术分享的核函数。

 

例子:有技术分享,由技术分享解得特征值:技术分享技术分享,对2重特征根4求技术分享的基础解系、正交化、单位化后得到特征向量:技术分享技术分享,对技术分享的特征向量单位化后得到技术分享,于是有技术分享,满足技术分享,对所有输入样本做映射得:

技术分享

技术分享

技术分享

随便选两个做内积,如技术分享技术分享

由此可见:技术分享就是对应于特征映射技术分享的核函数,也就得到下面的结论:

 

定理1:存在有限输入空间技术分享技术分享技术分享上的对称函数,那么技术分享是核函数的充要条件是矩阵技术分享半正定,此时相当于对输入空间向特征空间进行了隐式技术分享映射。对于上面的映射技术分享,令技术分享,于是技术分享,进而技术分享

 

定理3:设技术分享技术分享的一个紧子集(闭合且有界子集),技术分享技术分享上的对称函数,如果它在希尔伯特空间上的积分算子技术分享满足:

                                                                                                          技术分享

这里技术分享指的是由满足条件技术分享的所有函数技术分享组成的空间。

技术分享上扩展技术分享到一个一致收敛的序列,该序列由技术分享的特征函数技术分享构成,归一化使得技术分享,且所有特征值技术分享 ,则核函数技术分享可以被特征分解为:

                                                                                     技术分享

        

         在核方法中有一个相当重要的、不得不说的概念(先打个标记):

 

定义2:设技术分享是希尔伯特函数空间,其元素是某个抽象集合技术分享上的实值或复值函数,如果对于任何技术分享技术分享作为技术分享的函数都是技术分享中的元素,而且对于任何技术分享技术分享取内积有: 
                                                                                     技术分享

技术分享称为为再生核希尔伯特空间(Reproducing Kernel Hilbert Space,RKHS);称技术分享为再生核空间技术分享再生核(简称RK)。

 

定理4:对于定义在域技术分享上的每一个技术分享技术分享,存在一个定义在技术分享上的函数的再生希尔伯特空间技术分享,其中技术分享是再生核。反过来,对于线性有界函数的任意希尔伯特空间,存在再生核这个命题也成立。

         当然也可以利用核函数来构造核函数,有时候这种构造会很有效的解决问题:

条件:设技术分享技术分享技术分享上的核,技术分享技术分享技术分享上的实值函数,技术分享技术分享技术分享上的核,技术分享是一个对称半正定矩阵,则下面的函数都是核:

         1、技术分享;

         2、技术分享;

         3、技术分享;

         4、技术分享;

         5、技术分享;

         6、技术分享

         核的选择对于支持向量机至关重要,选定核技术分享后,原问题就变成了:

                                                                                                                  技术分享

                                                                                                                 技术分享

                                                                                                                            技术分享

这个优化问题有最优解么?记得核要满足Mercer条件,即矩阵技术分享在所有训练集上半正定,这说明这个优化是凸优化,于是这个条件保证了最大化间隔优化问题有唯一解,简直是天作之合啊,配合的天衣无缝;最后求的技术分享技术分享,那么从输入空间向特征空间隐式映射后得到的最大间隔超平面也就出来了:技术分享,且有几何间隔技术分享

         常用核函数总结如下:

         线性核函数:技术分享

         多项式核函数:技术分享

         高斯核函数:技术分享

         技术分享 核函数:技术分享

         下面这个链接收集了若干核函数:

             http://www.shamoxia.com/html/y2010/2292.html

        

          关于核方法的理论部分涉及到泛函分析、微积分等等,水比较深,我推荐一本书:《Kernel Methods for Pattern Analysis》(模式分析的核方法),作者是:John Shawe-Taylor和Nello Cristianini 。

 

 

 

SVM学习——统计学习理论

       关于统计学习的理论博大精深,想要弄明白是需要花费很大功夫的,涉及到方方面面的数学知识(比如泛函分析、高等数学、概率论、统计学…….),我这里也就是把一些基本概念、理论规整一下。

       存在一个未知的系统技术分享、给定的输入样本空间技术分享和这些输入样本通过技术分享处理后的输出技术分享。机器学习的过程可以看做是这样的:利用机器学习的方法,根据技术分享技术分享得到一个学习机(也可以叫模型),学习机在接受训练、测试样本以外的样本技术分享后得到的输出技术分享可以被认为是未知系统技术分享针对输入技术分享得到的输出的近似,所以这个学习机可以认为是对技术分享的内在规律的近似。

       实际上,可以将从输入空间产生样本(向量)技术分享看做从于某个客观存在的、确定的但是未知的概率分布函数技术分享相互独立地抽取出来的;显然由这些技术分享通过技术分享产生的输出技术分享服从技术分享,而我们的学习器应该是一个函数集合技术分享,这里的技术分享为参数集合,例如:线性分类器集合为技术分享,通过对技术分享参数的不同取值,我们可以得到一个函数集合;那么寻找这个学习器的过程就变成了从这个函数集合中找出能最佳逼近输入样本的函数。输入技术分享和输出技术分享服从联合概率分布函数技术分享技术分享技术分享,也就是说所有训练数据、测试数据的技术分享都是从技术分享相互独立地抽取出来的样本。

        那么如何衡量逼近是否最佳呢?需要定义一个损失函数:技术分享  (当输入为技术分享时,度量学习器的输出技术分享和由系统技术分享得出的输出技术分享之间的差异)。

还记得连续随机变量函数的数学期望不? 设连续随机变量技术分享的概率密度为技术分享,若其函数技术分享,则随机变量技术分享的数学期望定义为:

                                                                 技术分享

有了上面的概念就可以得到损失的数学期望:

                                                                 技术分享技术分享

这里技术分享就是风险泛函,也有人叫期望风险。注意这里的技术分享技术分享都是已知的,技术分享是未知的但是确定的,由不同技术分享确定的技术分享是未知的。

现在就可以将学习过程描述为利用经验数据(就是我们的样本对技术分享)最小化风险泛函技术分享的过程。显然这个技术分享我们没法知道,那就需要一个替代方案:技术分享,于是学习过程就变成了用使经验风险最小的函数逼近使风险泛函最小的函数的过程,这个原则就是传说中的经验风险最小化(ERM)归纳原则。举个体现ERM的例子:回归问题中的最小二乘法(用技术分享技术分享函数)和概率密度估计中的极大似然法(用技术分享技术分享函数),哈哈。

        把学习问题进行一般化的表示,如下:在空间Z上有一个概率分布技术分享,用z代替技术分享技术分享用来代表独立同分布样本,特定的损失函数用技术分享表示,那么风险泛函就表示为:

                                          技术分享 ,(其中技术分享为参数集合)

于是经验泛函就表示为:

                                          技术分享

最终我们的学习器就是用能最小化技术分享的函数去逼近能最小化技术分享技术分享

1、学习过程的一致性

        上面的一大堆表示就是为后面的定义和定理做准备的,这些定义和定理是学习理论的基石,我就把我懂得地方说说吧,另外“偷”一些经典的图过来。

定义1:经验风险最小原则下的学习一致性是:下面两个序列依照概率收敛于同一个极限时,则说ERM原则对函数集技术分享和概率分布技术分享是一致的。

                                          技术分享 ,      (其中技术分享为参数集合)

                                          技术分享 ,(其中技术分享为参数集合)

我理解这个定义的含义是:满足这个条件就可以保证在经验风险最小的原则下得到的学习方法在训练样本数量趋于无穷的时候可以使期望风险达到最小从而能最好的模拟未知系统S,定义等价于,这个ERM学习方法提供了一个序列技术分享技术分享,期望风险和经验风险在这个序列上都能收敛到最小可能风险。可以发现这个定义有个问题:如果从函数集去掉某个特定函数后发现它不一致了,就是说函数集的一致性由某个特殊函数决定了,显然这不是我们希望的,这种情况下的一致性叫做平凡一致性,真正对学习有意义的应该是函数集的非平凡一致性。贴个图,

技术分享

要去除平凡一致性,其实改一改定义就行了。

定义2:对于函数集技术分享的任意非空子集技术分享

                                          技术分享 ,(其中技术分享为参数集合,技术分享

都有技术分享,(其中技术分享技术分享的参数集合)成立,则说ERM原则对函数集技术分享和概率分布技术分享是非平凡一致的。

这个定义等价于从函数集中去掉能最小化风险的函数后上式仍然收敛。

       下面这个定理就是传说中的学习理论的关键定理,是大牛Vapnik和Chervonenkis提出的,这个定理要说的是ERM原则一致性的条件取决于函数集中最坏的函数,也就是说基于ERM原则的分析都是“最坏情况分析”,从理论上说,根据ERM原则想要找到一种学习理论能按照“真实情况分析“是八可能的。

定理1:设函数集技术分享满足:技术分享技术分享技术分享,那么ERM原则一致性的充要条件是:技术分享是在函数集技术分享上在如下意义下收敛于实际风险技术分享 :

                                         技术分享    ,技术分享技术分享为参数集合 (从这个式子其实可以看出它是单边收敛的,所以也叫单边一致性)

 

 

 

2、学习过程的收敛速度

        几个基本概念:用技术分享表示指示函数集技术分享(指示函数是指其函数值只取0和1两个值)中的函数能够把给定样本技术分享分成多少种不同的分类。

定义3:随机熵,技术分享技术分享 技术分享,它描述的是函数集在给定数据集上的多样性,显然它是个随机数(因为它建立在独立同分布的数据集上)。 

定义4:VC熵,  随机熵在联合分布函数技术分享上的数学期望:技术分享技术分享技术分享

        定理1描述的是ERM方法的单边一致性,自然会想到什么时候能满足双边一致性,即:  技术分享    ,技术分享技术分享为参数集合

定理2:指示函数学习过程双边一致收敛的充分必要条件是:

                                        技术分享 技术分享

        因为双边一致性条件等价于:技术分享技术分享,所以定理2其实是单边一致性成立的充分条件。

         下面在技术分享的基础上构造两个新概念,然后总结一下传说中的学习理论的三个milestone。

定义5:退火VC熵,技术分享

定义6:生长函数,技术分享技术分享技术分享

milestone1:ERM一致性的充分条件,所有的最小化经验风险的学习器都要满足它。                                     

                                       技术分享 技术分享

milestone2:收敛速度快的充分条件,它保证了收敛有快的收敛的渐进速度。

                                       技术分享

milestone3:履行ERM原则的学习器在解决任意问题的时候有一个快的收敛的渐进速度的充要条件

                                       技术分享

          接下来就轮到传奇的VC维出场了,VC维与生长函数有着非常重要的联系,又是一个定理,

 

定理3:任何生长函数都满足:

                                                 技术分享

或者有一下上界:

                                       技术分享 ,其中技术分享是一个整数,当技术分享时满足技术分享技术分享

直白点说就是:生长函数只能是线性的或者以一个对数函数为上界

 

 

 

 

 

 

 

 

 

定义4:如果一个样本集含有技术分享个样本,它能被某个指示函数集按照所有可能的技术分享分类方式分为两类,则称该函数集能将样本数为技术分享的样本集打散,对于任意指示函数集,它能打散的最大样本集的样本数量,就是它的VC维。由生长函数的定义可以知道,对于一个指示函数集,其生长函数是线性的则其VC维是无穷大的,而如果其生长函数以一个参数为技术分享的指数函数为上界,那么它的VC维就是技术分享。这就是生长函数和VC维的重要关系。

直观点,举个例子来理解VC维,在二维空间中,如果指示函数集技术分享是线性函数,那么对于空间中三个点A、B、C,将它们分成两类0或者1,可能的组合有技术分享种,分别是:技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享种,

技术分享

再增加一个点,那么就应该有技术分享种组合,我就不列出来了,发现没?没有一个线性函数能将B、C分为一类,而A、D分为另一类。(类似于一个单层感知器无法解决异或问题,嘿嘿)

技术分享

所以在二维空间中线性函数的VC维为3,实际上,推广以后,在n维空间中,线性函数的VC维总是n+1。

        遗憾的是目前尚没有一个可以计算任意指示函数集VC维的统一的理论框架,但是这不影响VC维的重要性,它实际上衡量了一个指示函数集的学习性能。

3、控制学习过程的推广能力
       
 控制学习过程的推广能力的理论的目的是构造一种利用小样本训练实例来最小化风险泛函的归纳原则,小样本指的是技术分享比较小,例如:技术分享技术分享

        关于学习器推广能力的,有以下知识:

假设实函数集合技术分享满足技术分享技术分享技术分享(A可以是技术分享,B可以是技术分享),引入符号技术分享技术分享,于是对于下面三种情况分别说明:

情况1: 技术分享是完全有界函数集(技术分享技术分享技术分享),下面的不等式以至少技术分享的概率同时对技术分享的所有函数(包括使经验风险最小的函数)成立:

                                      技术分享 ,(在技术分享取值只取0、1的二类问题上显然有:技术分享)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

情况2技术分享是完全有界非负函数集(技术分享技术分享技术分享),下面的不等式以至少技术分享的概率同时对技术分享的所有函数(包括使经验风险最小的函数)成立:

                                       技术分享 ,

情况3技术分享是无界非负函数集(技术分享技术分享),这种情况下无法得出描述学习器推广能力的不等式,所以需要做如下假设:

                                       技术分享 其中技术分享

下面的不等式以至少技术分享的概率同时对满足上述假设的所有函数(包括使经验风险最小的函数)成立:

                                       技术分享 ,其中技术分享

对于上述情形,如果技术分享包含无穷多个函数且VC维技术分享有限,则有:

                                       技术分享

                          如果技术分享包含N个元素,则有:

                                       技术分享  

上面说了这么多,其实就是想得出在统计学习理论框架下的实际风险到底由什么组成,

                                      技术分享 ,第一部分都知道了,第二部分叫做置信风险

 

这个式子很令人兴奋,它说明了神马问题呢?

用R画个大概吧:

h=seq(1,100,by=1)

l=seq(1,2000,by=1)

x=l/h

e=4*(log(2*x,base=exp(1))+1)/(x)+(4/l)*(log(0.25/4))

plot(x,e)

技术分享

       当技术分享比较大的时候技术分享就比较小,从而技术分享就比较小,此时实际风险更加接近经验风险,因此较小的经验风险能保证期望风险也较小。反之,一个小的经验风险不能保证期望风险也较小。

       如果样本数固定后再看VC维与置信风险的关系:

l=200

 

h=seq(1,100,by=1)

x=l/h

e=4*(log(2*x,base=exp(1))+1)/x-4*log(0.25,base=exp(1))/l

plot(h,e)技术分享

            这说明,当样本数固定的时候,VC维越大,那么置信风险就越大,因而最小化经验风险并不能保证期望风险也较小,所以此时学习结果的推广能力较差,这也就解释了为什么学习器的复杂度越高则越有可能导致overfit。
       技术分享 这个式子里的技术分享被称作结构风险(SRM)。于是乎,通过上面的分析,就能知道统计学习的目标是什么了吧——学习过程从满足ERM归纳原则变成了满足SRM归纳原则,而SVM就是实现这一原则的算法。

 

 

 

SVM学习——求解二次规划问题

       上一篇最后提到要解决最优化问题 :技术分享

                                                        技术分享技术分享

稍微对它做一下改动,如下:

                                       技术分享

                                       技术分享   技术分享   技术分享

这是一个约束优化问题,更进一步说是一个二次规划问题,复习一下约束优化问题:

     定义1:约束非线性问题是,

                                            技术分享

                                            技术分享

                                                  技术分享

其中技术分享技术分享都是定义在技术分享上的实值连续函数,且至少有一个是非线性的(反之为线性约束优化问题),m是一个正整数,技术分享叫做目标函数,技术分享叫做约束函数,如果目标函数是二次函数则叫做二次规划问题,由同时满足所有约束方程的点组成的集合叫做可行域,这些点叫可行点。

      定义2:Farkas引理,对于给定的n维向量技术分享技术分享与b,对于任意满足技术分享  技术分享 的向量P,必有技术分享的充要条件是:b在向量技术分享技术分享所形成的凸锥内,即成立:技术分享技术分享  技术分享 。

怎么理解“某个向量在若干其它向量形成的凸锥内”这个描述呢?可以看下图,技术分享

利用平行四边形法则,可以看到向量b处于由技术分享形成的凸多边形内,发挥一下想象力,在空间中这不就像是一个凸的锥状体嘛。

       定义3:对于约束问题,如果有一个可行点技术分享,存在技术分享且满足

                                                 技术分享

                                                技术分享 这里技术分享都是有效约束。

技术分享叫做K-T点。

      K-T点的几何意义可以从下图看出:

技术分享

      显然x1是K-T点而x2则不是。在一般非线性规划中,K-T条件是最优解的必要条件但不是它的充分条件,此时K-T点不一定是最优点,但对于凸规划问题,K-T条件是最优解的充要条件;顺便说下,凸规划是个好同志,它的局部最优解就是全局最优解,所以它的K-T点就是全局最优点。

      定理1:设技术分享是约束问题的局部极小点,技术分享点处的线性化可行方向的集合等于其序列可行化方向的集合,则必存在技术分享 技术分享使得:

                            技术分享

                            技术分享 这里技术分享都是有效约束。

技术分享点处的线性化可行方向的集合等于其序列可行化方向的集合”这个条件怎么满足呢?只要所有有效约束都是线性函数即可,此时技术分享必是一个K-T点。

      定理2:一阶最优性条件:对于可行点技术分享,如果目标函数和所有有效约束在技术分享处可微,且任意、非零的,在技术分享处的序列可行化方向向量d满足:技术分享,则技术分享为严格局部极小点。这意味着,当向某一点处的任意方向移动都将导致目标函数值上升,那么这个点不就是一个局部极小点嘛。

      定理3:二阶最优性条件:设技术分享为K-T点,技术分享是相应的拉格朗日乘子,如果技术分享,其中d为非零的、技术分享处的线性化零约束方向,则技术分享为严格的局部极小点。

      推论1:设技术分享为K-T点,技术分享是相应的拉格朗日乘子,如果对一切满足技术分享的非零向量d都有技术分享,则技术分享为严格的局部极小点。                                     

      对于前面的约束非线性规划问题,如果技术分享是二次函数且所有约束是线性函数的时候就变成了二次规划问题,这一写成以下形式:

                              技术分享

                              技术分享

                                   技术分享

       定理4:如果技术分享是二次规划问题的可行点,则技术分享是局部极小点的充要条件是:当且仅当存在拉格朗日乘子技术分享,使得:     

                              技术分享

                             技术分享    技术分享

                             技术分享 ,技术分享

成立,(即技术分享是K-T点)且对于一切满足

                            技术分享

                            技术分享

                           技术分享(其中E为等式的有效约束,I(技术分享)为不等式的有效约束)

的向量d都有:技术分享

        定理5:设H为半正定矩阵(所有特征值大于等于0),则技术分享二次规划问题的全局极小点当且仅当它是一个局部极小点或者K-T点。

      当H为半正定矩阵,目标函数为凸函数时,该二次规划被叫做凸二次规划,它的任何K-T点都是极小点。回想我们开篇要解决的那个问题,目标函数显然是一个凸函数,所以它是一个凸二次规划问题,所以一定存在全局极小点(真好!)。

      到此,我们就可以开始解决开篇的那个问题:

                                       技术分享

                                               技术分享   技术分享

已经确定它是一个凸二次规划问题了,那么可以利用其拉格朗日函数:技术分享

通过对技术分享技术分享求偏导数后得到:

                                           技术分享

                                           技术分享  

带入原始拉格朗日函数,转化为对偶问题:

                             技术分享

                                           技术分享

                                           技术分享

这样就把带不等式约束的优化问题通过其对偶形式转化为只带等式约束的优化问题,即下面的最优化问题W:

                            技术分享

                             技术分享

                                    技术分享

求得技术分享后就得到了技术分享,它使得几何间隔技术分享取最大值,从而得到最优分类超平面。

      K-T点要满足的条件还有一个是:技术分享,这个式子说明了什么问题呢?

      1、显然,几何间隔不等于1的那些输入点的拉格朗日系数必为0(这些点是非积极因素),而几何间隔恰好为1的输入点的拉格朗日系数则不为0(这些点是积极因素),这说明确定最终分类超平面的就是这些几何间隔为1的边界点,所以这些输入点就是支持向量(Support Vector)。从这里也能看出支持向量机的抗干扰能力比较强,对非积极因素的扰动对于最优化解没有影响;

      2、技术分享,其中i为支持向量,因为:技术分享

,我们的目标函数技术分享

                                     技术分享

                                     技术分享

                                     技术分享(注意这里技术分享为常数,且有约束条件技术分享

于是通过这样的对偶转化,我们得到了实现几何间隔为技术分享的最大间隔超平面。

     通过上面的推导也可以看出将二次规划转化为其对偶问题可以简化约束条件,让我们记住最优化问题W吧,这是一个很牛逼的转化,这个式子还有个特点,就是“数据仅出现在内积中”。

     前面的讨论都是说输入样本是线性可分的时候怎么找到最大间隔超平面来划分两类数据,那么如果输入样本是线性不可分的,那可怎么办呀,前面的那些讨论不就成徒劳的了么?学习SVM后才知道它牛的地方,如果我们可以通过某种函数映射将输入样本映射到另外一个高维空间并使其线性可分的话,前面的讨论结果不就都可以用到了么,还记得“数据仅出现在内积中”吧,假设这个映射关系是:技术分享,这时候的内积技术分享就变成了技术分享,如果有方法能够将内积技术分享直接算出,就将把输入样本“从低维空间向高维空间映射”和“求映射后的内积”这两步合并成了一步,这样直接计算的方法就是核函数方法,下篇学习核函数吧,SVM的理论部分还是很数学的啊!

 

 

SVM学习——线性学习器

       变量之间存在的一次函数关系是线性关系,那么线性分类就应该是利用这样一种线性关系将输入学习器的样例按照其标记分开。一个线性函数的因变量值是连续的,而分类问题则一般是离散的,这个实值函数技术分享可以这样表示:

      技术分享        其中技术分享是权重向量,技术分享是阈值参数,由技术分享可以确定一个超平面。

      假设,当技术分享时,输入样本技术分享标记为正类,否则为负类,这里的技术分享为阈值,相当于这里有一个决策规则技术分享,从几何上说,技术分享定义的超平面(技术分享维欧氏空间中维度大于一的线性子空间)将输入空间分成了两部分,分别对应于两个类别标记,技术分享决定了超平面距离原点的距离,技术分享决定了超平面的方向和大小,如图:

                                                                   技术分享

很明显,这个分类超平面不是唯一的(当然,如果超平面不存在则输入空间线性不可分),只要输入集合确定,那么实际上它的分布也就确定了,如果这个分类超平面客观上存在,那么直观地看,任意一个数据样例离超平面越远则说明这个超平面把数据分的越“开”,于是就有了函数间隔的定义:

定义1:输入样本技术分享对应于超平面技术分享的函数间隔是:技术分享,这里技术分享是数据分类标记,不失一般性可取值为-1表示负类和+1表示正类,如果技术分享则意味着数据被正确分类(不管是负类还是正类,如果实际输出和目标输出同号则意味着它们的乘积大于0,否则表明本来为负类的被分成了正类或者本来为正类的分成了负类,所以乘积为负)。显然,输入样本集合到超平面的函数距离由离超平面最近的样例决定。

      将上式转化为归一化线性函数:技术分享,得到的量叫做几何间隔,回想空间中点到直线的距离公式:设直线方程为:技术分享,则点技术分享到直线的距离为:技术分享

,这里的技术分享就是向量技术分享的2-范数,所以几何间隔可以看作是输入样本到分类超平面的距离。

      可以通过下图理解几何间隔:

      技术分享

       对于任意点技术分享,在分类超平面技术分享上的投影点位技术分享技术分享为点技术分享到分类超平面的距离,显然有:技术分享(为w的单位方向向量),于是有:技术分享

 

 

回想Rosenblatt感知器的原始形式:

 

--------------------------------------------begin 感知器算法------------------------------------------------

      已知线性可分的数据集合S,其势为n,学习率为技术分享,则

        技术分享

       while (!所有样例都被正确分类){              

                   foreach(i in 1..n){

                       if (技术分享)

                       {

                                技术分享

                                技术分享

                                技术分享

                        }

                 }

         }

---------------------------------------------end 感知器算法-------------------------------------------------

 

      当技术分享表明当前输入样本被误分了,因此权重被更新了多少次就表明样本被误分了多少次,

假设存在向量技术分享满足技术分享,对任意一个输入样本都有技术分享技术分享是一个固定的值,这就意味着所有输入样本和由技术分享技术分享决定的超平面之间的最小几何间隔为技术分享,那么找到这个超平面前S中的样本最多会被误分多少次呢?

 

-----------------------------------------begin 线性分类器分类误差上界推导-----------------------------------

      构造新的输入样本向量,技术分享和权重向量技术分享,一旦发生分类错误,则有:技术分享

于是,

1、技术分享,那么就有:技术分享技术分享技术分享,假设总共出现了技术分享次误分类,归纳一下,  

 技术分享技术分享(式子1);

2、又因为技术分享,归纳一下,

技术分享(式子2);

3、从R的定义可以发现它其实描述了输入样本分布的广泛程度,对于由技术分享技术分享决定的超平面,技术分享描述了超平面离原点的距离,因此这个距离一定是小于等于R的,于是有技术分享技术分享(式子3);

4、由柯西-许瓦茨不等式可以得到:技术分享(式子4)。

     最后,由式子1、式子2、式子3和式子4,可以得到以下关系:

技术分享

      这个式子很重要,它从理论上证明了如果分类超平面存在,则对于输入样本S,在有限次迭代和最多技术分享次分类错误下就可以找到这个分类超平面,输入样本一旦确定,R也就确定了,这意味着此时技术分享只和几何间隔技术分享有关且为反比关系。

---------------------------------------------end 线性分类器分类误差上界推导---------------------------------

 

      回到函数间隔技术分享和几何间隔技术分享这两个量,对分类超平面做尺度变换(类似于技术分享),发现这个变换并不会使与原有超平面技术分享相关联的函数关系发生变化,当用几何间隔来评价分类器的分类性能时,由于归一化而使这种尺度变换对评价不产生影响,因此完全可以将函数间隔固定为1,那么,对于正例有:技术分享,对于负例有:技术分享,于是正例或者负例与分类超平面之间的几何间隔为:

技术分享技术分享

   技术分享 技术分享 。

于是,最大化几何间隔就变成了最小化技术分享,等价于最小化技术分享,最后得到下面的最优化问题:

------------------------------------------------begin --------------------------------------------------------

                    对于给定的样本集合技术分享

                    求最优化问题        技术分享

                                              技术分享    技术分享

------------------------------------------------end   --------------------------------------------------------

求解上面的问题就要用到最优化理论中的一些方法了,下一篇正好复习一下。

 

 

SVM入门为何需要核函数

生存?还是毁灭?——哈姆雷特

可分?还是不可分?——支持向量机

之前一直在讨论的线性分类器,器如其名(汗,这是什么说法啊),只能对线性可分的样本做处理。如果提供的样本线性不可分,结果很简单,线性分类器的求解程序会无限循环,永远也解不出来。这必然使得它的适用范围大大缩小,而它的很多优点我们实在不原意放弃,怎么办呢?是否有某种方法,让线性不可分的数据变得线性可分呢?

有!其思想说来也简单,来用一个二维平面中的分类问题作例子,你一看就会明白。事先声明,下面这个例子是网络早就有的,我一时找不到原作者的正确信息,在此借用,并加进了我自己的解说而已。

 

 

本文出自:http://blog.sina.com.cn/s/blog_4b700c4c0100oc1s.html

高斯核函数

标签:连续函数   总结   john   异或   over   数据集   网络   维数   oid   

原文地址:http://www.cnblogs.com/yuan328/p/6412539.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!