搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > 凌云网络实验室 > 支持向量机----分类中的“王者”

支持向量机----分类中的“王者”

凌云网络实验室 2020-05-20


_


_


_


_

关于支持向量机,在理论方面有很多数学公式推导,理解那一系列的数学推导对支持向量机的理解你会更加深入,但是本文打算从基础概念入手,避免复杂的数学公式,以下内容是我看过有关SVM总体认知讲解最好的了,很通俗,很清晰,特别适合初学者在大体上对SVM有一个清晰的认识。我对其进行了相应的整体与归纳,希望对大家有所帮助,有什么问题也可以与我们交流讨论。


_


_

SVM三大重要构件

  1. 最大间隔

  2. 高维辐射

  3. 核方法

这三个构件是彼此独立又互相关联的关系。正可谓“千里之行始于‘最大间隔’,在‘高维映射’迎来升华,最后通过‘核方法’修成正果”。

间隔概念

硬间隔:要求很严格,不允许有一点错误分类 

软间隔:知道会有划错但希望尽可能少 

支持向量:处于边缘的数据点,支持向量处于两个类的边缘,离另一个类最近,只要确保它们分类正确,剩下的肯定能分类正确,支持向量是支持向量机的焦点,也是支持向量机的由来。

高维映射

非线性分布时,我们可以采取将低维数据映射到高维上,将不可分变为可分。比如在原来左右的维度上增加上下维度。关键是我们要知道当前的分布是什么样的,也知道想要表达的分布是什么样的,选择合适的映射函数。 

核函数

核函数不是一种函数,而是一类功能性函数,能够在支持向量机中完成高维映射这种功能的函数都称为核。 

一是增加空间的维度;

二是完成对现有数据从原空间到高维空间的映射。

我们必须首先选定一款核函数,才能通过核函数将数据集进行映射从而得到高维映射结果。核函数一旦选定就不会再调整与改变。

最后归纳一下,使用支持向量机进行分类经过三个步骤: 

1)选取一个合适的数学函数作为核函数。 

2)使用核函数进行高维映射,数据点在映射后由原本的线性不可分变为线性可分。 

3)使用SMO等算法使得间隔最大化,用间隔作为度量分类效果的损失函数,最终找到能够让间隔最大的超平面,分类也就最终完成了。

在支持向量机中,涉及“核”的术语实际上有三个,分别是核函数、核方法(Kernel Method)和核技巧(Kernel Trick),核方法和核技巧就是提出需求,核函数则是给出解答。核函数是一石二鸟,实际上是完成了两项独立的任务。 

任务一是完成核方法提出的要求,就是如何将低维非线性数据映射成高维数据,从而变成线性可分。前面我们反反复复介绍的其实就是核方法的内容,但这并不是核函数的全部内容。 

任务二是完成核技巧提出的要求,之所以称为“技巧”,是因为核技巧主要是提高核方法的计算效率。前面我们将高维映射和间隔最大化认为是支持向量机的两大部分,按照这种理解,数据应该首先完成高维映射,然后计算间隔,最后再进行间隔最大化,也因此产生了双主线“打架”的问题。 

计算间隔涉及向量点积运算,如果先进行高维映射再进行向量点积运算,这会导致运算量激增,尤其是高维向量运算,由于参加运算的维度增加了,运算量也会显著增加。核技巧简化了这个过程:只需要输入原始向量就能通过核技巧计算直接得到正确的点积结果,而不用把两个向量分别完成高维映射,再进行点积运算,即将两项工作用数学技巧一次就完成。 

THE

END

凌云网络

排版:米玉秋

审核:马淑芳

版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《支持向量机----分类中的“王者”》的版权归原作者「凌云网络实验室」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注凌云网络实验室微信公众号

凌云网络实验室微信公众号:netlab_201

凌云网络实验室

手机扫描上方二维码即可关注凌云网络实验室微信公众号

凌云网络实验室最新文章

精品公众号随机推荐