您好、欢迎来到现金彩票网!
当前位置:红彩会 > 分类器 >

从大间隔分类器到核函数:全面理解支持向量机

发布时间:2019-04-23 18:51 来源:未知 编辑:admin

  原标题:从大间隔分类器到核函数:全面理解支持向量机 选自KDNuggets 机器之心编译 参与:刘晓

  在这篇文章中,我们希望读者能对支持向量机(SVM)的工作方式有更高层次的理解。因此本文将更专注于培养直觉理解而不是严密的数学证明,这意味着我们会尽可能跳过数学细节而建立其工作方式的直观理解。

  自从 Statsbot 团队发表了关于(时间序列的异常检测(time series anomaly detection)的文章之后,很多读者要求我们介绍支持向量机方法。因此 Statsbot 团队将在不使用高深数学的前提下向各位读者介绍 SVM,并分享有用的程序库和资源。

  如果你曾经使用机器学习执行分类任务,应该会听说支持向量机(SVM)。这个算法的历史已经有五十出头,它们随着时间不断在进化,并适应于各种其它问题比如回归、离群值分析和排序等。

  在很多深度学习开发者的模型储备中,SVM 都是他们的至爱。在 [24]7(),我们也将使用它们解决多个问题。

  我将更专注于培养直觉理解而不是严密的数学推导,这意味着我们会尽可能跳过数学细节而建立其工作方式的理论的直观理解。

  假设你们的大学开设了一项机器学习课程,课程的讲师发现那些擅长数学或者统计学的学生往往表现的最好。课程结束之后,老师们记录了注册课程的学生的分数,他们对每一个学生根据其在机器学习课程上的表现加上了一个标签:「好」或者「坏」。

  现在,老师们想要确定数学和统计学的得分与机器学习课程表现的关系。或许,根据他们的统计结果,他们会在学生注册课程时加上一个前提条件限制。

  他们会怎么做呢?首先把他们的数据表示出来,我们可以画一个二维图,一个坐标轴表示数学成绩,另一个表示统计学成绩。每个学生的具体成绩作为一个点在图中表示。

  点的颜色(绿色或者红色)表示学生在机器学习课程中的表现:「好」或者「坏」。将图画出来的话应该是这样的:

  当一个学生要求注册课程的时候,讲师将会要求她提供数学和统计学的成绩。根据他们已有的数据,他们将对她在机器学习课程上的表现作出合理的猜测。我们真正想要的是一类以形式(math_score,stats_score)馈送到「分数元组」的算法。这个算法能告诉你一个学生在图中是以一个红点还是一个绿点表示(红/绿可理解为类别或者标签)。当然,这个算法已经以某种方式包含了训练数据的特征。

  在这个案例中,一个好的算法将能寻找在红色和绿色群集之间的分界线(即决策边界),然后确定一个分数多元组将依赖于哪一侧。我们选择绿色方或者红色方的其中一侧作为他在这项课程中最可能的表现水平标签。

  这条线称为决策边界(因为它将不同标记的群集分离开来)或者分类器(我们用它来将点集分类)。图中展示了这个问题中可能的两个分类器。

  有一个很有趣的问题:以上两条线都将红色和绿色的点群集分离开来。有什么合理依据能让我们选择其中一个而舍弃另一个吗?

  要注意一个分类器的价值并不在于它能将训练数据分离的多好。我们最终是希望它能将尚未见过的数据分离(即测试数据)。因此我们需要选择能捕捉训练数据的普遍模式的那条线,而这条线更可能在测试数据中表现的更好。

  以上所示的第一条线看起来有些许偏差,其下半部分看起来过于接近红点群集,其上半部分过于接近绿点群集。当然它确实很完美的将训练数据分离开来,但是如果在测试数据中遇到了有一个点离群集稍远的情况,它很有可能会将其加上错误的标记。

  而第二的点就没有这样的问题。例如,下图为两个分类器分离方块点群集的结果展示。

  第二条线在正确分离训练数据的同时也尽可能的远离两个群集,即采取最大间隔的策略。处于两个群集的正中间位置能降低犯错的风险,可以说,这给了每一个类的数据分布更多的浮动空间,因此它能更好的泛化到测试数据中。

  SVM 就是试图寻找第二类决策边界的算法。上文我们只是通过目测选择更好的分类器,但实际上为了在一般案例中应用,我们需要将其隐含原理定义地更加精确。以下将简要说明 SVM 是如何工作的:

  那些定义了这条决策边界的最近邻点被称作支持向量。而决策边界周围的区域被定义为间隔。下图展示了支持向量和对应的第二条决策边界:黑色边界的点(有两个)和间隔(阴影区域)。

  支持向量机提供了一个方法在多个分类器中寻找能更准确分离测试数据的分类器。虽然上图中的决策边界和数据是处于二维空间的,但是必须注意 SVM 实际上能在任何维度的数据中工作,在这些维度中,它们寻找的是和二维空间决策边界类似的结构。

  比如,在三维空间中它们寻找的是一个分离面(后面将简要提到),在更高维空间中它们寻找的是一个分离超平面,即将二维决策边界和三维分离面推广到任意维度的结构。一个可以被决策边界(或者在普遍意义上,一个分离超平面)被称作线性可分数据。分离超平面被称作线性分类器。

  我们在上一节看到的是一个线性可分数据的简单例子,但现实中的数据通常是很凌乱的。你也很可能经常遇到一些不能正确线性分类的例子。这里展示了一个这样的例子:

  很显然,使用一个线性分类器通常都无法完美的将标签分离,但我们也不想将其完全抛弃不用,毕竟除了几个错点它基本上能很好的解决问题。那么 SVM 会如何处理这个问题呢?SVM 允许你明确规定允许多少个错点出现。你可以在 SVM 中设定一个参数「C」;从而你可以在两种结果中权衡:

  必需强调一下这是一个权衡的过程。如果想要更好地分类训练数据,那么代价就是间隔会更宽。以下几个图展示了在不同的 C 值中分类器和间隔的变化(未显示支持向量)。

  注意决策边界随 C 值增大而倾斜的方式。在更大的 C 值中,它尝试将右下角的红点尽可能的分离出来。但也许我们并不希望在测试数据中也这么做。第一张图中 C=0.01,看起来更好的抓住了普遍的趋势,虽然跟更大的 C 值相比,它牺牲了精确性。

  在之前的例子中,间隔内是不允许任何错点的存在的。在这里我们看到,同时拥有好的分离边界和没有错点的间隔是基本不可能的。由于现实世界中的数据几乎不可能精确的分离,确定一个合适的 C 值很重要且很有实际意义。我们往往使用交叉验证选择合适的 C 值。

  我们已经介绍过支持向量机如何处理完美或者接近完美线性可分数据,那对于那些明确的非线性可分数据,SVM 又是怎么处理的呢?毕竟有很多现实世界的数据都是这一类型的。当然,寻找一个分离超平面已经行不通了,这反而突出了 SVMs 对这种任务有多擅长。

  这里有一个关于线性不可分数据的例子(这是著名的异或问题变体),图中展示了线性分类器 SVM 的结果:

  这样的结果并不怎么样,在训练数据中只能得到 75% 的准确率,这是使用决策边界能得到的最好结果。此外,决策边界和一些数据点过于接近,甚至将一些点分割开来。

  现在轮到我最喜欢 SVM 的部分登场了。我们目前拥有:一项擅长寻找分离超平面的技术,以及无法线性分离的数据。那么怎么办?

  当然是,将数据映射到另一个空间中使其线性可分然后寻找分离超平面!我会一步一步的详细介绍这个想法。

  标签分离很完美,接下来将平面映射回初始的二维空间中看看决策边界是什么样子:

  在训练数据中得到了 100% 的准确率,而且分离边界并不会过于接近数据点,太棒了!初始空间中决策边界的形状依赖于映射函数的形式。在映射空间中,分离边界通常是一个超平面。

  当将分离超平面映射回初始空间时,分离边界不再是一条线了,间隔和支持向量也变得不同。根据视觉直觉,它们在映射空间的形态是很好理解的。

  看看它们在映射空间中的样子,再看看在初始空间。3D 间隔(为了避免视觉混乱,没有加上阴影)是分离超平面之间的区域。

  在映射空间中有 4 个支持向量,这很合理,它们分布在两个平面上以确定间隔。在初始空间中,它们依然在决策边界上,但是看起来数量并不足以确定最大间隔。

  我之前已经很明确的提过,在某个地方出现了根号 2!在这个例子中,我想展示一下向高维空间映射的过程,因此我选了一个很具体的映射。一般而言,这是很难确定的。不过,多亏了 over』s theorem,我们能确定的是通过将数据映射到高维空间确实更可能使数据线. 所以我要做的就是映射数据然后运行 SVM?

  大部分 SVM 程序库已经经过预包装并包含了一些很受欢迎的核函数比如多项式,径向基函数(RBF),以及 Sigmoid 函数。当不使用映射的时候(比如文中第一个例子),我们就在初始空间中计算点积,我们之前提过,这叫做线性核函数(linear kernel)。很多核函数能提供额外的手段进一步调整数据。比如,多项式核函数:

http://m3-ctech.com/fenleiqi/70.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有