牛掰的算法系列:支持向量机(SVM算法)

支持向量机英文全称“Support Vector Machines”(简称 SVM),它是机器学习中最常用的一种“分类算法”,它是一种非常优雅的算法,有着非常完善的数学理论基础,因此其预测效果,在众多机器学习模型中可谓是“出类拔萃”。在深度学习没有普及之前,“支持向量机”可以称的上是传统机器学习中的“霸主”,下面我们将介绍本节的主人公——支持向量机(SVM)。

支持向量机是有监督学习中最有影响力的方法之一,支持向量机的发展史可以追溯至上世纪 60 年代,  它是由前苏联学者 Vapnik 在解决模式识别问题时提出的一种算法模型,后经过陆续几十年的发展,直至 1995 年 SVM 算法才真正的完善起来,通过它可以解决手写字符识别的问题。

当我们第一次见到“支持向量机”这个名词时,一定会感到“懵圈”,单从这个名字来看,它就散发这非常神秘的气息,仿佛游戏中的必杀技一样,真的是我们所感觉到一样吗?其实真的不必在意名字,名字都是拦路虎,就像我们前面学习的“朴素贝叶斯”一样,并没有多么复杂。

支持向量机并非源于“人名”,但以我们现有的知识,我们只知道“向量”是什么,至于“支持向量机”是什么,您一定做不出任何有说服力的解释。假如通过上述介绍成功引起了您对“支持向量机”的兴趣,那么不妨继续往下读。

注意:支持向量机是一个比较“难”讲解的算法,需要有大量数学知识做为基础,否则只能雾里看花。在写作本文的过程中,我尽量本着通俗易懂的角度来讲解,但由于个人能力有限,以及读者群体不同,难免会众口难调,还请多多包含,如果文章中有任何不妥之处,也请不吝赐教。

支持向量机组成

首先我们对支持向量机算法做一个直观的描述:支持向量机是一个分类器算法,主要用于解决二分类的问题,它最终可以告诉我们一个样本标签属于 A 还是属于 B,这和之前学习过的分类算法别无二致。

任何算法模型都好比一台精巧的机器,有许多零部件组成,支持向量机也是如此。在支持向量机中有三个重要概念,它们也是组成支持向量机的重要构件,分别是:

  • 最大间隔
  • 高维映射
  • 核函数


上述三个构件是组成 SVM 支持向量机的核心,三者之间彼此独立,又互相依存,如果缺少了其中任何一个部件,都不能驱动支持向量机这台“机器”,如果用一句话来总结这三个部件的作用,那就是“最大间隔是标尺,高维映射是关键,最终结论看核函数”这三个部件也是后续介绍的核心知识,只有充分理解了它们,才能将得心应手的使用 SVM 算法。

支持向量机本质

说到支持向量机的本质,其实有些不可思议,它是在线性分类算法的基础上发展而来的,就如同已经学习过的 Logistic 逻辑回归分类算法一样,只需“套”给线性函数“套”上一层 Logistic “马甲”,就可以用线性模型解决离散数据的分类问题,而对于支持向量机来说,要解决分类问题则过程则更为复杂,下面剖析一下支持向量机的本质,从而帮助您更好的理解它。

1)间隔和支持向量

“支持像向量机”这个算法模型名字中涉及了一个非常重要的角色,那就是“支持向量”,支持向量机这个算法名字也是由它而来(机,指的是“一种算法”),要想理解什么是“支持向量”就需要先认识“间隔”这一名词。

我们知道,在支持向量机中有一个非常重要的概念就是“间隔最大化”,它是衡量 SVM 分类结果是否最优的标准之一。下面通过一个具体的实例对理解什么是“间隔”:

中国象棋是我国独有的一种棋类娱乐活动,棋子分为黑子和红子,并有“楚河汉界”将其分开,如果用一条直线将不同颜色的棋子进行分类,这显然信手拈来,只需要在楚河汉界的空白附带画一条“中轴线”就能以最佳的方式将它们分开,这样就能保证两边距离最近的棋子保留有充分的“间隔”。

上述示例中产生的“间隔”实际上是依据两侧的不同颜色的棋子点划分而成的,而这些棋子统称为“样本点”,虽然这些样本点都参与了分类,但其实对于分类效果影响最大的是处于间隔“边缘”的样本,只要将处于边缘的样本正确分类,那么这两个类别也就分开了,因此我们把处于边缘的数据点称为“支持向量”。

2) 软间隔和硬间隔

间隔又分为软间隔和硬间隔,其实这很好理解,当我们在使用直线分类时,虽然本着尽可能将类别都区分开来,但总是会在一些特殊的“样本点”不能被正确的分类,如果您允许这样的“样本点存在”,那么这样的画出的间隔就成为“软间隔”,反之态度强硬必须要求“你是你,我是我”,这种间隔就被称为“硬间隔”,但往往在处理实际业务时,硬间隔只是一种理想状态。

3) 最大间隔

上述所说的保留充分的“间隔”,其实就是“最大间隔”,你可能会问,为什么必须是最大间隔呢,两个类别只要能去分开不就可以了吗?

其实这涉及到算法最优化的问题,就像我们常说的一样做事要给自己留有充分的余地,不能将自己至于危险的边缘,如果数据样本分割的不留余地,就会对随机扰动的噪点特别敏感,这样就很容易破坏掉之前的分类结果,学术称为“鲁棒性差”,因此我们在分类时要尽可能使正负两类距离分割线达到最大间隔。

支持向量机应用

支持向量机就是一种使得样本点达到最佳分类效果的算法,但上述示例并非支持向量机的应用场景,通过上述示例我们只是知道了“什么是间隔”以及什么是“支持向量”,那支持向量应用场景到底是怎么的呢?通过下面形象化的描述,您也许能体会到 SVM 的强大之处:

当对弈双方在下棋之前,需要将散落在棋盘上的棋子放在各自的位置上,此时这些棋子并非按照颜色排列在“楚河汉界”两边,而是“杂乱无章”的放在棋盘上,那么如何快速地将这些棋子分呢?你应该如何做呢?当然你也许会想到用手一个个的挑出来,但是这里的棋子只是类比数据样本点,在实际的业务中你可能面对的是成千上亿的数据样本,要想解决这个问题,支持向量机就派上了用场。

如果用画“直线”的方法,一定不能解决上述问题,因此简单粗暴的线性函数“貌似”派不上用场,那么到低如果解决呢?

我们不妨回忆一下 Logistic 回归分类算法,通过给线性函数“套”上一层 Logistic 函数就解决了离散数据的分类问题,SVM 能否按照同样的思维方式来解决呢,答案是肯定的。

支持向量机类似于逻辑回归,这个模型也是基于线性函数  wTx + b 的,不同于逻辑回归的是,支持向量机不输出概率,只是输出类别。

当 wTx + b 为正时,支持向量机预测属于正类;而当 wTx + b 为负时,支持向量机预测属于负类。当然,在判断类别的过程中还要用到 SVM 的另外两个重要部件,也就是“高维映射”和“核函数”,否则无法实现利用线性函数解决分类问题,至于是如何解决的,后续知识会做详细讲解。

注意:上述示例中“棋子”只是形象化的比喻,在具体的业务中,我们处理的是“数据样本点”

总结

本节我们初步认识了“支持向量机(SVM)算法”,了解了组成它的三个重要部件。通过对支持向量机本质的讲解,我们知道支持向量机也是从线性函数的基础上发展而来的,因此我们可以得出,支持向量机(SVM)是一种利用线性函数解决线性不可分(分类)问题的算法,也许读完最后一句话有点“懵”,通过后续知识的学习,您就会体会到这句话的含义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羽蒙等风来

您的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值