svm 是什么?如何找到正确的超平面

栏目: 数据库 · 发布时间: 5年前

svm 是什么?如何找到正确的超平面

什么是支持向量机?

在机器学习中,支持向量机是在 分类与回归 分析中分析数据的 监督式学习模型 与相关的学习算法。

给定一组训练实例,每个训练实例被标记为属于 两个类别 中的一个或另一个,SVM训练算法创建一个将新的实例分配给两个类别之一的 模型 ,使其成为 非概率二元线性分类器

SVM模型是 将实例表示为空间中的点 ,这样映射就使得单独类别的实例被尽可能宽的明显的间隔分 开。

然后,将新的实例映射到同一空间, 并基于它们落在间隔的哪一侧来预测所属类别

以上是维基百科的解释,看起来是不是有一点懵,没关系,我们接下来我们进行一些 解释你就明白了。

首先,我们通过一个简单的游戏来帮助你理解svm。

游戏规则:请将下面图中的篮球与红球分离开

关卡一:

svm 是什么?如何找到正确的超平面

你可能已经想到解决办法了,在红球与方块之间加一条直线就可以了。

svm 是什么?如何找到正确的超平面

关卡二:

svm 是什么?如何找到正确的超平面

这个时候直线好像不行了,我们可以使用一条曲线将两种球分开

svm 是什么?如何找到正确的超平面

通过这个小游戏,你应该对svm有了一点初步的认识。

蓝球和白球是数据源,用来区分蓝球和红球的直线叫做 分类器

我们将关卡二中的图转化成三维模型

svm 是什么?如何找到正确的超平面

曲线变成了一个平面,很好的将蓝球与红球分离开来,这个平面就 叫做 超平面

如何识别正确的超平面

上面,我们已经习惯了用超平面隔离这两个数据源的过程, svm的实质就是找到最合适的那个超平面以进行最好的分类。

01

下面的图中我们用A、B、C三个超平面分开了星星与红球,哪个是最佳的超平面呢?

svm 是什么?如何找到正确的超平面

在识别超平面的时候你需要牢记一个原则,就是你选择的这个超平面一定是要更好的对你的源数据进行分类。遵循这个原则,超平面B更好的完成了这个任务。

02

同样使用A、B、C三个超平面进行隔离,此时三个超平面都很好的将星星和红球隔离,哪一个是正确的超平面呢?

svm 是什么?如何找到正确的超平面

此时你需要牢记的一个关键点是,SVM就是试图把分类器放在最佳位置,好让在分类器的两边有尽可能大的间隙。

svm 是什么?如何找到正确的超平面

可以看到C与两个数据源的边距都比A和B要高,因此正确的超平面是C。

03

在这个图中有A、B两个超平面对数据源进行了分类,如果让你使用上面两个规则哪一个时正确的超平面呢?

svm 是什么?如何找到正确的超平面

使用规则一,正确的超平面是A,使用规则二,会选择超平面B,因为B与数据源间隔的位置更大。在这里需要注意的是,最大化边距的前提是准确的进行分类,这里B的分类有误差,因此,正确的超平面是A。

04

现在,没有直线可以分隔以下圆球球和星星了,因为在圆球中混入了一颗星,这颗星是异常值 。

svm 是什么?如何找到正确的超平面

SVM具有忽略异常值并找到具有最大余量的超平面的功能

svm 是什么?如何找到正确的超平面

05

之前我们所做的超平面都是线性的超平面,现在将情况变得复杂一点,在下面的图中,无法找到一个线性的超平面,该怎么办呢?

svm 是什么?如何找到正确的超平面

此时我们需要引入一个附加功能,添加一个新特征z = x ^ 2 + y ^ 2。现在,让我们绘制轴x和z上的数据点。

svm 是什么?如何找到正确的超平面

SVM有一种称为 内核技巧 的技术。

它主要用于非线性分离问题。它执行一些极其复杂的数据转换,然后根据你定义的标签或输出找出分离数据的过程。

当我们在原始输入空间中查看超平面时,它看起来像一个圆圈:

svm 是什么?如何找到正确的超平面

利用核函数进行调参

在寻找超平面的过程之中,我们会遇到各种各样的难题,但最终的目的时能够更好的 高SVM的准确性。

此时我们可能会用到svm分类器中的调整参数,通过不断的调整以获取最优的解决办法。

线性SVM中超平面的学习是通过使用一些线性代数转换问题来完成的。

对于 线性核 ,使用输入(x)和每个支持向量(xi)之间的点积来预测新输入的等式 f(x)= B(0)+ sum(ai *(x,xi))

这是一个方程,涉及使用训练数据中的所有支持向量计算新输入向量(x)的内积。必须通过学习算法从训练数据估计系数B0和ai。

如果 数据线性不可分 ,将输入空间内线性不可分的数据映射到 一个高维的特征空间内,使数据在特征空间内是线性可分的,这个映射记作 ϕ(x)。

之后优化问题中就会有内积 ϕi⋅ϕj, 这个内积的计算维度会非常大,因此引入了 核函数

svm中有两个非常重要的参数: C参数和gamma参数

其中C是惩罚系数,即对误差的宽容度。

对于较大的C值,如果超平面能够更好地将所有训练点分类正确,则优化将选择边距较小的超平面。相反,非常小的C值将导致优化器寻找更大边距的分离超平面,即使该超平面错误分类更多的点。

Gamma是选择RBF函数作为kernel后,该函数自带的一个参数。

Gamma越大,支持向量越少,Gamma值越小,支持向量越多。支持向量的个数影响训练与预测的速度。

kernel 可以帮我们很快地做一些计算, 在 sklearn 中可以用 grid search 找到合适的 kernel,以及它们的 gamma,C 等参数,下面列出了四种常用的 核函数以及如何进行调参:

svm 是什么?如何找到正确的超平面

探索数据科学之旅

公众号ID

DataCastle-VIP

svm 是什么?如何找到正确的超平面


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Programming Ruby

Programming Ruby

Dave Thomas、Chad Fowler、Andy Hunt / Pragmatic Bookshelf / 2004-10-8 / USD 44.95

Ruby is an increasingly popular, fully object-oriented dynamic programming language, hailed by many practitioners as the finest and most useful language available today. When Ruby first burst onto the......一起来看看 《Programming Ruby》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具