zoukankan      html  css  js  c++  java
  • 支持向量机的近邻理解:图像二分类为例(2)

    前言:

    假设空间

            一个古老的哲学原理:世界并不是以小包的形式来到我们面前,除非遍历整个空间,任何训练得到的模型都是过拟合的。面对学习问题,首先面对这一个空间的认知问题,对空间结构的认识来自于接口,而全面的认识来自于遍历。

            在认识一个未知空间之前,一般的套路是由接口获取的数据对这个空间进行简单假设,迭代修改理解规则,最后到遍历。

           参考链接:深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件


    线性不可分

            实际中,我们会经常遇到线性不可分的样例,此时,我们的常用做法是把样例特征映射到高维空间中去(如下图),而不是去改善特征提取的工作,从本质上使特征在特征空间中直接线性可分;

          

    图1 在二维向量空间中的样本嵌入到三维空间中是线性可分的


            线性不可分映射到高维空间,可能会导致维度大小高到可怕的(19维乃至无穷维的例子),导致计算复杂。核函数的价值在于它虽然也是讲特征进行从低维到高维的转换,但核函数绝就绝在它事先在低维上进行计算,而将实质上的分类效果表现在了高维上,也就如上文所说的避免了直接在高维空间中的复杂计算。

           

    视野、假设与事实的矛盾

            从可见样本归纳出假设空间,与事实空间一般不会相同,这就意味着泛化是个概率性的问题。在图1中的例子中可以看出,严格来说,符合专家直觉特征提取过程并不符合甚至可视样本空间的要求,二维线性不可分映射到三维向量空间线性可分是对特征提取的弥补。

            一切直觉可计算的,便是递归可计算的。既然符合直觉的特征提取看似永远不能满足仅仅是可见样本空间的要求,就使用一劳永逸的方案,使用模型来解决特征空间的可描述性。


    核函数与近邻法

             由特征提取得到的向量集合,嵌入到原本向量空间,并非线性可分时,也拥有一般规律,为近邻特性。原本的向量空间的欧式度量可能不能描述这种欧式特性,描述这种隐含的近邻特性的方式是引入核函数:

             对于二分类问题,标签为1和2,类别模型 M1 和 M2;任意N维特征向量 X1, X2,

             期望:   if (f(X1,M1)  < f( X1, M2 ) ) 则  X1为类别1;

                                                                               其中f(x)为欧式度量

             但是此种情况一般是不成立的,人工提取的特征向量在表示样本时并非能维持相对于真实属性的近邻特性,那么 期望是不成立的。我们希望一种从样本到特征的映射能保证样本属于类别的近邻特性,这就引入核函数。

             期望:if (K(f(X1,M1))  <  K(f( X1, M2 )) ) 则  X1为类别1;

                                                                               其中K()为核函数,为满足样本的(相对于样本类别属性)真实近邻特性而产生。

            

    绕过核函数使用近邻法

            下面就从公式层面进行推导,以核函数为中介,绕过核函数,直接使用近邻法进行支持向量机的模型训练。

    一、线性可分的向量机模型使用近邻法

            在二分类样本+1,-1样本空间中,划分超平面可以使用以下线性方程:


             其中w = ( w1,w2,....,wd )为法向量,决定超平面的方向;b为位移项,决定了超平面到原点间的距离。记作(wb)。

            样本空间中任一点x到超平面(w,b),距离可写为:


            若超平面能将训练样本正确分类,即对于(xiyi∈D,

        

            线性可分即为能够完全使用超平面进行分类,满足上式的要求


                       其中红色虚线上的点 为满足公式1  yi = +1 wTx+b=0 的点

                      其中蓝色虚线上的点 为满足公式2  yi = -1   wTx+b=0的点,两个虚线上的点被称之为支持向量

            两个异类支持向量到超平面的距离之和为:


            被称为间隔


            直觉上可以得到,两类支持向量(红色虚线和蓝色虚线)的(两类边缘最近邻)中间位置(黑色实线)是最适合的分类超平面,即是“最大间隔”的分类超平面。

            这就等价于,满足公式1公式2约束的参数wb,使得r最大,即

              

          

             这就是线性支持向量机的基本形式


    收缩样本到支持向量:

           公式4本身就是一个凸二次规划问题,可以使用凸二次规划的方法来解决。既然直觉上可以仅使用支持向量,那么理论上可以转化成仅使用支持向量的形式。

           使用拉格朗日乘子法得到其等价问题:

        

           带入公式6到公式5,可将L(w,b,a)中的wb消去



          这个就是我们需要最终优化的式子。至此,得到了线性可分问题的优化式子。

           求解这个式子,有很多的方法,比如SMO等等,个人认为,求解这样的一个带约束的凸优化问题与得到这个凸优化问题是比较独立的两件事情。

           利用标注样本,可以求解出a,根据公式6,可以得到原模型

    收缩样本到支持向量:

           根据式4中的约束不等式,拉格朗日方法在使用过程中必须满足:

          ai为拉格朗日乘子,限定公式9-1;公式9-3为极值条件;公式9-2为样本限定条件;

          可以得出:

          ai=0,则样本的拉格朗日乘子为0,样本不参与公式8-2(由公式5计算得到)计算;若ai>0,yif(xi)=1,对应的样本为边界样本。这样仅留下yif(xi)=1的边界(xi,yi)样本,即是支持向量


  • 相关阅读:
    需要登陆网站后才能获取数据的页面爬取
    PTA中提交Python3程序的一些套路
    PAT 甲级 1014 Waiting in Line (30 分)(queue的使用,模拟题,有个大坑)
    PAT 甲级 1013 Battle Over Cities (25 分)(图的遍历,统计强连通分量个数,bfs,一遍就ac啦)
    PAT 甲级 1012 The Best Rank (25 分)(结构体排序)
    anconda + python 3.6安装(以前的anconda,anaconda和python版本对应关系)
    数学建模python matlab 编程(喷泉模拟)
    数学建模python matlab 编程(疾病传播模型)
    scikit-learn机器学习(四)使用决策树做分类,并画出决策树,随机森林对比
    scikit-learn机器学习(四)使用决策树做分类
  • 原文地址:https://www.cnblogs.com/wishchin/p/9199988.html
Copyright © 2011-2022 走看看