SVM向量机的Python实现

SVM全称是SupportVectorMachine,即支持向量机,是一种监督式学习算法,可用于进行模式识别、分类以及回归,简称为SVM向量机。那么为什么要提出支持向量机?支持向量机的提出又解决什么问题?事实上,有时我们运用机器学习算法对数据进行训练时,往往在对样本训练时会取得较好的结果,但是当我们将训练好的网络运用到整体样本时出现的效果却不好。

而对于支持向量机来说,该算法也是寻找分类超平面的过程。但是,支持向量机寻找的是最优分类超平面,也是最大间隔超平面。也就是要寻找一个超平面是的两个集合的边界点到该超平面的距离一样,并且使得两集合的边界的距离最大。如下图。

我们知道分类超平面可以用如下图的公式来表示:那么我们要求最大分类超平面,我们首先要求得上图中距离最大的两个边界平行线,我们知道最大平行线距离可以根据解析几何的知识求解得:

将分类超平面表达式代入上式可以得到下式:

为了方便求解,我们可以将最大值问题转换成最小化问题如下。也就是说我们实际上是要求w的范数最小。

那么下一问题是支持向量机是如何求解线性不可分的问题的呢?事实上,支持向量机解决线性不可分的问题就是将非线性的样本映射到更高维度的空间去,使得样本变成线性可分的,这样就可以用一个超平面来划分了。如下图所示。因此,解决非线性分类问题的工作有两项:首先是将非线性的样本映射到更高维度的空间去,使得样本变成线性可分的;接着使用线性分类器学习分类。

支持向量机的一些证明推导公式我们不在这里说明,如果需要了解,建议去查找专业的书籍。我们简单说明一下SVM向量机在python中的实现。在Sklearn模块库中,有独立的SVM向量机模块sklearn.svm其中相关的机器学习算法函数如下。

可以看到,SVM向量机方法也是通过import方法导进去的。得到的结果如下,可以看出,SVM向量机对非线性样本数据的分类可以取得良好的分类结果。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181008A0I75X00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券