分享

SVM初识之如何解决分类问题

 昵称36377086 2017-01-03

本文转自公众号 象物(xiangwu_world


支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,在统计学习理论的基础上发展起来的一种机器学习方法。在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并被推广应用到函数拟合等其他机器学习问题中。

在SVM出现之前,感知机和神经网络算法被广泛研究,他们也都是用于分类的算法。基于SVM的研究则是为了能更好的找到最优分类面。与前两者相较,SVM的优势在于可以运用核函数把低维空间中的点映射到高维空间,从而能够对非线性可分数据进行分离。

SVM是机器学习里用的比较多的一种分类算法。它是一种二类分类器,简言之,能够实现一个分类面对两类数据进行分类。这个分类面被叫做超平面。

之所以称之超平面,是因为SVM分类的数据可能是高维的。一维的分类面是一个点,二维的是一条直线,三维的是一个平面,更高维的就是超平面了。

下面我们来模拟一下SVM的简单实现过程:

首先,我们输入一个随机的线性数据集,如图1:


图1 一个给定的随机数据集


当我们对数据进行二分类时,分类面的方向和位置可以由无数种可能,那么怎么确定哪一个是最好的分类界限呢?


 


图2 对随机数据集寻找二分类面


实际计算过程中,SVM所要找的这个分类面需要满足两个条件:一分类面与两类样本间的距离相等;二分类面与两类样本间的距离最大。

因此,我们可以定义一个函数来表示间隔,进而只要找到函数的最大值就可以求出最大间隔,即找出最适的超平面了。

那么表示间隔的这个函数怎么求最大值呢?高等数学中我们学过拉格朗日函数求最值的方法,即引入拉格朗日乘子。这里我们同样用拉格朗日的方法来求间隔的最大值。这是一个有约束条件的优化问题:约束条件是指SVM的所要找的超平面要满足的条件,即距离两类样本等间距,优化问题是指求间隔的最大值。通过求这个优化问题就可以求出最大间隔和分类面,我们要求的SVM就得到啦~~ 

聊到这,我们需要考虑另一个问题:如果所给的数据(如下图3)并不是线性可分的,即无法清楚的找到两类数据的分界面,仿佛有一些点放错了位置,我们该怎么办?



图3一个非线性可分数据集


那么对于图3这样的数据集,我们可以允许一部分点出现在错误的一侧,即通过在函数中引入另外一个变量来允许错误的发生。该变量叫做松弛变量,松弛变量的大小决定了我们允许发生错误的概率的大小。


接下来我们来讨论一下线性不可分数据集,如下图4所示,它无法用一条直线来分类。


  

图4  一个线性不可分数据集


于是我们就要祭出本文的大招,核函数(kernel trick)啦~~


到底什么是核函数呢?简单来说,核函数是把输入空间的点映射到特征空间的函数。换言之,是用一个函数把低维空间上的点变换到高维空间。我们将图4所示的那些点通过核函数变换到高维空间后如图5所示:


  图5 线性不可分数据集映射到高维空间


基于SVM在解决小样本,非线性问题中的诸多优势,它可以被应用到函数拟合等其他的机器学习问题中。当然,SVM的知识还远不止这些。


预告:下一篇文章,笔者将会给大家详细介绍我们今天祭出的大招kernel函数,有没有很期待呢~



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多