Press "Enter" to skip to content

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

 

什幺是支持向量机?

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

关卡一:

 

 

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

 

 

关卡二:

 

 

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

 

 

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

 

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

 

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

 

 

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

 

如何识别正确的超平面

 

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

 

01

 

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

 

 

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

 

02

 

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

 

 

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

 

 

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

 

03

 

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

 

 

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

 

04

 

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

 

 

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

 

 

05

 

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

 

 

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

 

 

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 等参数,下面列出了四种常用的 核函数以及如何进行调参:

 

 

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注