SVM从原理到代码实现1

1. SVM历史背景和趣闻

SVM(Support Vector Machine)支持向量机,是一种经典的用于分类或回归的机器学习方法。

Vapnik等人在多年研究统计学习理论基础上对线性分类器提出了另一种设计最佳准则,其原理从线性可分说起,然后扩展到线性不可分的情况,甚至扩展到使用非线性函数中去,这种分类器被称为支持向量机(Support Vector Machine,简称SVM)。支持向量机的提出有很深的理论背景,其理论基础不是那么的好理解,详细的理论介绍,请参考Vapnik等人的论文

Cortes Corinna 和 Vapnik Vladimir N  "Support-vector networks". Machine Learning20 (3): 273–297. 

Andrew Ng老师说,当时machine这个词非常的时髦,为了让自己的观点和idea能够被关注,Support-vector networks 改名为Support Vector Machine。这也解释了,很多文献中说,SVM 又叫 Support-vector networks。

由于SVM方法有很强数学理论基础,SVM被大量使用在图片识别,语音识别上,都取到了很好的效果,成为了90年代到现在较为流行的算法

90年代,在贝尔实验室里,Yann Lecun和 Vapnik 常常就 神经网络和 SVM 两种技术的优缺点,常常讨论得非常的深入,慢慢的形成了SVM方法的支持者和神经网络的信徒。

Scholkopf是Vapnik的大弟子,支持向量机与核方法研究的领军人物。据Scholkopf说,Vapnik当初发明支持向量机就是想’干掉’神经网络(He wanted to kill Neural Network)。支持向量机确实很有效,一段时间支持向量机一派占了上风。

很多人都认为SVM是两成的神经网络。

近年来,神经网络一派的大师Hinton又提出了神经网络的Deep Learning算法,使神经网络的能力大大提高,可与支持向量机一比。Deep Learning假设神经网络是多层的,首先用Restricted Boltzmann Machine学习网络的结构,然后再通过Back Propagation学习网络的权值。关于Deep Learning的命名,Hinton曾开玩笑地说: I want to call SVM shallow learning. (注:shallow 有肤浅的意思)。其实Deep Learning本身的意思是深层学习,因为它假设神经网络有多层。

参考文献《神经网络从被人忽悠到忽悠人(五)》

Andrew Ng老师说,Deep Learning的名字来源,也因为Deep Learning方便媒体宣传,本质还是多层神经网络,但Deep Learning这个名字比多层神经网络更酷,更适合大众理解和媒体宣传。

很多实践结果表明:之所以Deep Learning最近这么火,的确是因为随着大数据、算力、算法的发展,其分类效果远好于SVM。下图是就同一个分类问题,用不同的方式,获得的结果:


SVM从原理到代码实现1_第1张图片

你可能感兴趣的:(SVM从原理到代码实现1)