SVM原理详细图文教程来了!一行代码自动选择核函数,还有模型实用工具

栏目: IT技术 · 发布时间: 4年前

内容简介:SVM?老分类算法了,轻松拿下,然而……SVM?老分类算法了,轻松拿下。然而,每一次老板让你讲解SVM,或每一次面试被问到SVM,却总是结结巴巴漏洞百出。

SVM?老分类算法了,轻松拿下,然而……

贾浩楠 发自 凹非寺

量子位 报道 | 公众号 QbitAI

SVM?老分类算法了,轻松拿下。

然而,每一次老板让你讲解SVM,或每一次面试被问到SVM,却总是结结巴巴漏洞百出。

「这些人怎么总能精准发现我的盲点?」

简直让人怀疑自己掌握的是假SVM。

如果你有这样的问题,那这篇 SVM数学原理 对你会有很大帮助,一起来看看吧。

SVM 由线性分类开始

理解SVM,咱们必须先弄清楚一个概念: 线性分类器

给定一些数据点,它们分别属于两个不同的类,现在要找到一个线性分类器把这些数据分成两类。

如果用x表示数据点,用y表示类别(y可以取1或者-1,分别代表两个不同的类),一个线性分类器的目标是要 在n维的数据空间中找到一个超平面 (hyper plane),将x的数据点分成两类,且超平面距离两边的数据的间隔最大。

SVM原理详细图文教程来了!一行代码自动选择核函数,还有模型实用工具

这个超平面的方程可以表示为( wT中的T代表转置):

SVM原理详细图文教程来了!一行代码自动选择核函数,还有模型实用工具

SVM原理详细图文教程来了!一行代码自动选择核函数,还有模型实用工具

△2维坐标系中,超平面是一条直线

当f(x)等于0的时候,x便是位于超平面上的点,而f(x)大于0的点对应 y=1 的数据点,f(x)小于0的点对应y=-1的点。

SVM 想要的就是找到各类样本点到超平面的距离最远,也就是找到最大间隔超平面。任意超平面可以用下面这个线性方程来描述:

SVM原理详细图文教程来了!一行代码自动选择核函数,还有模型实用工具

二维空间点(x,y)到直线Ax+By+C=0的距离公式是:

SVM原理详细图文教程来了!一行代码自动选择核函数,还有模型实用工具

扩展到n维空间后,点x=(x1,x2……xn)到直线wTx+b=0的距离为:

SVM原理详细图文教程来了!一行代码自动选择核函数,还有模型实用工具

其中 :

SVM原理详细图文教程来了!一行代码自动选择核函数,还有模型实用工具

根据支持向量的定义,支持向量到超平面的距离为d,其他点到超平面的距离大于d。

于是有:

SVM原理详细图文教程来了!一行代码自动选择核函数,还有模型实用工具

||w||d是正数,令它为 1(之所以令它等于 1,是为了方便推导和优化,且这样做对目标函数的优化没有影响),于是:

SVM原理详细图文教程来了!一行代码自动选择核函数,还有模型实用工具

将两个方程合并,有:

SVM原理详细图文教程来了!一行代码自动选择核函数,还有模型实用工具

至此,就得到了最大间隔超平面的上下两个超平面。

SVM原理详细图文教程来了!一行代码自动选择核函数,还有模型实用工具

每个支持向量到超平面的距离可以写为:

SVM原理详细图文教程来了!一行代码自动选择核函数,还有模型实用工具

y(wTx+b)>1>0 可以得到  y(wTx+b)=|wTx+b| ,所以可以将支持向量到超平面距离改写为:

SVM原理详细图文教程来了!一行代码自动选择核函数,还有模型实用工具

最大化这个距离:

SVM原理详细图文教程来了!一行代码自动选择核函数,还有模型实用工具

这里乘上 2 倍是为了后面推导方便,对目标函数没有影响。

带入一个支持向量,可以得到:

SVM原理详细图文教程来了!一行代码自动选择核函数,还有模型实用工具

所以得到的最优化问题是:

SVM原理详细图文教程来了!一行代码自动选择核函数,还有模型实用工具

处理异常值

有时,对于某些点(x(i),y(i)),分类器可能会做出错误操作。

尽管在开发实际使用的SVM模型时,会设计冗余,避免过拟合,但仍然需要想办法将误差控制在一个较小的范围。

可以通过在模型中增加 惩罚机制 (用c表示)解决这个问题。

SVM原理详细图文教程来了!一行代码自动选择核函数,还有模型实用工具

SVM原理详细图文教程来了!一行代码自动选择核函数,还有模型实用工具

设SVM输出结果为E,则上图中出现的E=0则没有惩罚。

若果c非常大,则模型分类更加精准,但支持向量到超平面距离小,容易出现过拟合。

若c=1,则支持向量到超平面距离最大化,尽管会出现一些分类误差,但这是一种较好的方案。

约束凸优化问题

为了克服 约束凸优化问题 ,采用PEGASOS算法。

重新构造一个约束独立性方程:

SVM原理详细图文教程来了!一行代码自动选择核函数,还有模型实用工具

上式表示,如果点远离直线,则误差将为零,否则误差将为(1-t(i))。

我们需要最小化的是:

SVM原理详细图文教程来了!一行代码自动选择核函数,还有模型实用工具

由于消除了约束,因此可以采用梯度下降来最大程度地减少损失。

SVM原理详细图文教程来了!一行代码自动选择核函数,还有模型实用工具

梯度下降算法计算损失:

SVM原理详细图文教程来了!一行代码自动选择核函数,还有模型实用工具

在SVM上应用梯度下降:

SVM原理详细图文教程来了!一行代码自动选择核函数,还有模型实用工具

非线性分类

使用SVM对非线性数据进行分类,需要将数据投影到更高的维度,即通过 增加低维数据的特征向量将其转换为高维数据

SVM原理详细图文教程来了!一行代码自动选择核函数,还有模型实用工具

增加数据特征向量需要消耗巨大的计算资源,这里采用核函数。

而这种思路最难的点,是为你自己的模型选择一个合适的核函数。

这里推荐一种自动调参方法 GridSearch

将多种核函数(线性、RBF、多项式、sigmoid等)等标号,依次调用,找到一个最合适自己模型的。

定义一个变量params:

params = [{‘kernel’:[‘linear’, ‘rbf’, ‘poly’, ‘sigmoid’], ‘c’:[0.1, 0.2, 0.5, 1.0, 2.0, 5.0]}

调用:

SVM原理详细图文教程来了!一行代码自动选择核函数,还有模型实用工具

以上详细介绍了SVM背后的数学原理,并提供了一些使用SVM模型时的问题解决办法。

其中,使用代码自动选择核函数的方法来自外国博主 Daksh Trehan

如果你对SVM的原理有更深刻的理解,或有其他实用的技巧,请留言分享给大家吧。

参考链接

https://medium.com/@dakshtrehan?source=post_page—–d46e94b23b9d———————-

版权所有,未经授权不得以任何形式转载及使用,违者必究。


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

查看所有标签

猜你喜欢:

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

演算法圖鑑

演算法圖鑑

石田保輝、宮崎修一 / 陳彩華 / 臉譜 / 2017-12 / TWD450

★日本超人氣演算法學習書 ★逾50萬次下載量,「Apple年度最佳APP」書籍化! ★隨書附贈獨家贈品「圖形搜尋和排序圖解記憶表」 ★★ 讀再多文字解說都看不懂?沒關係,全部畫給你看,一次弄懂演算法到底是什麼!★★ ●直觀理解,從基礎開始學習,一用就上手的演算法專書! ●全圖像化step by step,完整拆解制霸AI時代的演算法精髓! ●詳解演算法的奧妙、執......一起来看看 《演算法圖鑑》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

URL 编码/解码
URL 编码/解码

URL 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具