我学习SVM的过程和资料

来源:互联网 发布:阿里云docker 编辑:程序博客网 时间:2024/06/05 05:36
前前后后,看了SVM也有几次了。感觉最近才一窥门径。现在梳理一下学习SVM的学习资料和学习过程。

理论基础

推荐:《统计学习方法》 李航

我最开始是在网上找了一些人写的长篇大论的文章来学习SVM的,现在看来,把自己的学习笔记给别人当入门材料是一种极不负责任的行为。
看过这本《统计学习方法》,才发现SVM其实并没有想象中那么难以理解。当然,第一遍看完SVM的章节,仍然有很多不理解的地方。这本书的好处是讲的清晰明了,但同时也要求一定的理论基础(建议先读前两个小节)。读完之后,并不能形成一个比较直观的感觉。然后结合下面的实例,就可以有一个比较直观的概念了。

实例讲解

svm-tutorial.com 这个网站里面有三篇结合实例的讲解,对理解SVM的基础、原理非常有帮助。但是,我在看这几篇文章的时候,作者还没有写到如何求解目标函数及核函数的部分。这部分还要结合Andrew NG的机器学习公开课来看。

  1. SVM - Understanding the math - Part 1 - The margin讲解了最优超平面(hyperplane)与间隔(margin)之间的关系。
  2. SVM - Understanding the math - Part 2讲解了向量间计算距离的基础知识,在这里算是复习了一下。然后,结合第三篇博客看,就很轻松了。
  3. SVM - Understanding the math : the optimal hyperplane这篇文章推导出了用超平面的法向量来表示间隔最优化的目标函数,同时也对限制条件做了一定讲解。我在读这篇文章的时候,结合李航的《统计学习方法》里面讲解SVM的知识,受益匪浅。

核函数实例

关于核函数这部分,《统计学习方法》里面的理论知识比较充足。但是,属于入门阶段的人对这个门很难有一个直观的理解。而Andrew的公开课在这个地方的讲解非常好。

  1. Kernels I非常直观地讲解了核函数的作用和效果。理解一下landmarks和相似度函数,就基本上可以理解SVM的核函数的机理。看完这节公开课,再回到《统计学习方法》的第三小节,就能够比较好地理解:为什么在原特征空间线性不可分的样本,通过核函数映射到新的特征空间就线性可分了。这其中,核函数的作用居功至伟。
  2. Kernels II第二个视频进一步讲解了映射到新的特征空间之后的一些处理细节。

通过Andrew NG的公开课,我对核函数的直观理解如下:

  • 核函数是一个衡量样本点之间的距离(定义有多种)的公式。
  • SVM把每一个样本点通过核函数,扩展到m维(m是样本的个数)。过程是,一个样本点,通过核函数,计算得到与所有样本点的距离关系(包括它自己),形成一个新的向量(长度就是m)。

而后,通过对新的特征空间的损失函数的优化,得到新特征空间的线性分类超平面。而这个过程中,核函数是不变的。

总结

就我个人而言,如果使用了哪个算法(尤其是需要调参),而我自己又不是很了解其实现机理,那么用起来会非常别扭。通过一段时间的学习,对SVM的实现原理也算是有了一个比较直观的认识,还是蛮开心的。
我在上面总结的资料里面并没有涉及目标函数的求解方法,如果以后用到再回来看(因为现在用来到,怕是看到,也会很快就忘了)。

0 0
原创粉丝点击