【SVM-tutorial】SVM-支持向量机综述

原文地址:https://www.svm-tutorial.com/

(这篇文章是翻译 Alexandre KOWALCZYK 的SVM tutorial ,这篇tutorial 写的很详细,没有很好的数学背景的同学也可以看的懂,作者细心的从最基础的知识讲起,带领我们一步步的认识这个复杂有趣的模型。译者是在征求了作者意见后进行的翻译,译者也是机器学习的入门小白,如果有哪里翻译的不对,希望大家指出,我会慢慢翻译后面的内容。Alexandre KOWALCZYK是一个热心的人,大家可以在原文所在网站后留言。好了,我们开始有趣的旅程)

最近我收到一封读者的来信,关于我写的SVM背后数学知识的文章

我发现我缺少一些数学方面的知识,关于它的假设和推导。

这让我在学习SVM的过程中产生了困惑,SVM到底是什么?,

我们什么时候用它,又怎么用它来解决问题?

我尝试用简单清晰的方式来阐述它

SVM到底是什么?

SVM是一种有监督模型

有监督就是说你的数据集是需要被标记的

举例: 我每天都要收到很多来自顾客的信件。这里有些是投诉信件,需要尽快答复。我希望有一种方法去辨识信件的类别,这样我就可以快速的回复那些更加重要的信件。

方法1:我可以在邮件中用关键词来当作标签,例如:“紧急”,‘投诉“,”帮助“

扫描二维码关注公众号,回复: 3892470 查看本文章

但这种方法的缺点是,我需要去考虑所有可能的关键词,但很可能会漏掉其中的一两个。而且关键词会随时间积累,变得越来越多,这样很难去维护

方法2: 我们可以用有监督的机器学习算法

Step1:收集邮件,越多越好

Step2:阅读每封邮件的题目,将它们分为简单的两类,”投诉“,“非投诉”

Step3:利用这个数据集来训练模型

Step4:利用交叉验证来检验预测模型的质量

Step5:用模型来预测一封新的邮件是投诉还是非投诉

在这个例子中,我要用很多的邮件来训练一个模型,希望模型能有很好的预测结果.而SVM是众多模型中你可以用到的一个,它可以利用数据集来学习,然后做出预测

注意,这里最重要的是第二步。如果你给SVM一些没有标签的邮件,你可能得不到任何结果

用 SVM 学习一个线性模型

回顾上面例子的第三步,像SVM这样的监督模型应该用标记过的数据来训练,但是它是训练什么呢?它是来训练学习一些规则。

那它学习到了什么呢?

在那个例子中,SVM是用来学习一个线性模型

什么是线性模型?简单来说:线性模型就是一条直线(复杂点来说,它是一个超平面)

如果你的数据很简单,它只有两个维度,那么SVM将会学习训练出一条可以将数据集分开的直线。

这里写图片描述

如果只能训练出一条直线,我们为什么要讲线性模型?因为你自己很难得出这条直线

先不说这些,让我们来看看:

  • 1)我们假设得到的数据是线性可分的
  • 2)我们知道一条直线可以用 y=wx+b 来表示 (这就是我们的模型)
  • 3)我们知道,通过改变 w b 的值,可以得到无数条这样的直线
  • 4)我们需要一个算法去决定 w,b 取什么值时,我们可以最好的区分这些数据

SVM就是这样一个算法

算法和模型

在文章的最初,我说过SVM是一个有监督的学习模型。但现在我说它是一个算法。这样说有错吗?算法这个词经常被随意使用。你有时会读到SVM是一个有监督的算法,如果你认为算法就是通过一系列的步骤去解出一个特定的结果,这样想是不准确的。序列最小化(Sequential minimal optimization)是一个经常被用去训练SVM的算法。但是你也可以用别的算法来训练SVM,例如坐标下降法(Coordinate descent)。但是很多人对这些细节并不在意,所以我们经常简化说SVM算法(并不说我们到底用什么算法来训练它)

SVM 和 SVMS

有时,你会听到人们讨论SVM,有时听到他们讨论的是SVMS。

这里我们引用了维基百科中的讲解,可以对这两个概念有个清楚的认识:

在机器学习中,SVMS是具有相关学习算法的监督学习模型

用于分析分类和回归分析的数据

所以我们发现 SVM家族中有很多个模型

SVMS

维基百科告诉我们SVMS可以做两件事情:

  • SVM 分类模型
  • SVR 回归模型

所以说在支持向量机家族中是有很多模型的,但这不是故事的结尾

分类

在1957年,叫做感知机的线性模型被Frank Rosenblatt 发明出来,用来进行分类(这实际上是简单神经网络的构建块之一,也称为多层感知器)

几年后,Vapnik和Chervonenkis提出了另一个称为“最大边界分类模型”SVM诞生了。

在1992年,Vapnik等人相出利用核函数来解决线性不可分的问题。

最终,在1995年,Cortes和Vapnik提出了软边缘分类器(Soft Margin Classifier),它允许我们在使用SVM时接受一些错误分类。

所以当我们讨论SVM分类模型是,这里面其实有四种类型

  • 最大边界分类器( the Maximal Margin Classifier)
  • 使用核函数的分类器(The kernelized version using the Kernel Trick)
  • 软边缘分类器(Soft Margin Classifier)
  • 软边缘加核函数的分类器(结合了前三种)

最后一个是用的最多的,这就是为什么SVMS很难理解的原因,因为它是由很多块组成的

回归

1996年,Vapnik等人 提出了SVM来解决回归问题。称为支持向量回归(SVR)。像分类SVM一样,这个模型包括C超参数和内核技巧。

如果你想进一步学习SVR,你可以参考这篇文章 good tutorial by Smola and Schölkopft.

历史概述

  • 最大边界分类器(1963 or 1979)
  • 核技巧(1992)
  • 软边缘分类器(1995)
  • 支持向量回归(1996)

如果你对这方面历史感兴趣,想了解的更多,可以参考这个 very detailed overview of the history.

由于SVM在分类上做的很成功,人们开始考虑对其他类型的问题使用相同的思考方式,或者创建新的派生模型。 因此,在SVM系列中还存在几种不同但十分有趣的方法:

  • 结构化支持向量机,能够预测结构化对象
  • 最小二乘支持向量机用于分类和归一化
  • 支持向量聚类用于执行聚类分析
  • 用于半监督学习的转换支持向量机
  • 排序SVM用于排序结果
  • 一类支持向量机用于异常检测

总结

我们知道为什么SVM很难去理解,这是因为在SVM背后还有很多其他模型用于不同的环境。但是从历史的角度我们可以很清晰的了解SVM的整个创建过程。

我希望这篇文章能拓宽你的视野,能帮助你更好的理解这些模型

如果你想知道SVM是怎么用于分类额,你可以继续阅读下面的文章。更好的了解模型背后的数学知识

猜你喜欢

转载自blog.csdn.net/nanbei2463776506/article/details/73512878