svm解决兵王问题_【机器学习系列文章】SVM初识之如何解决分类问题|原创

f8ec1d9f24c39c46c010fe59210da7f8.png

撰文 | 李佳

责编 | 赵和玉

编者按:本文是机器学习系列的第一篇。笔者为大家简单介绍了支持向量机(SVM)对于解决不同数据集分类情况上的应用,并引出了核函数的概念。希望读完后对您有所帮助,欢迎大家给我们私信您的想法以及希望能了解到的有关机器学习的知识。也非常欢迎大神拍砖交流~~

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

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

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

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

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

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

39901d93999b55166072dd3d359032c6.png

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

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

8ad0b0a0e140ebdd6ea9653fc03fab64.png

c88da68e8562339932022e5513d6aab1.png

e8d910fa0eeb74167219ab41992dc856.png

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

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

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

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

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

0b9ba4c2029b53a1d803b4e9a275d418.png

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

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

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

031c84cb53e2df9a17b20eb3954f45b9.png

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

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

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

7e9439768fbeb0d406c9f145aaa8e68b.png

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

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

欢迎感兴趣的小伙伴加入我们的公众号团队,只要你有想法、有热情,就能在这里得到锻炼和成长。请联系:fanyushuaishuai (wechat)。

欢迎关注同名微信公众号 象物 ID:xiangwu_world。联系我们:fanyushuaishuai转载授权:13462749888@163.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值