代码改变世界

SVM学习资料

2013-06-21 17:29  夜与周公  阅读(2001)  评论(0编辑  收藏  举报

  SVM(support vector machine),被认为是“off-the-shelf”最好的监督机器学习算法之一,甚至很多人认为可以把“之一”去掉。SVM有着天然的intuition,大量的数学推导和优雅的解形式(有了大量的数学推导,自然就容易发paper啦)。实际上SVM在工业界也有着广泛的应用如,文本分类、图像分类、生物医学诊断和手写字符识别等。有关SVM资源非常之多,本文尝试总结一些比较好的SVM学习资源。

  0.维基百科

  如果想迅速的了解SVM一些基础概念,维基百科是一个不错的选择,SVM在维基百科的地址是:http://en.wikipedia.org/wiki/Support_vector_machine。虽然是一个基础性资源,但维基百科里面的有关SVM知识并不是那么简单,如果能理解维基百科里面的内容,说明你的数学功底还是相当厉害的。

  1.课程资源

  Stanford大学Andrew Ng教授的机器学习公开课,课程地址:http://v.163.com/special/opencourse/machinelearning.html。有关SVM的课程从第6课开始到第8课结束,横跨了3个课时。如果仅仅是视频可能还不够,需要阅读他的课件,课件的地址:http://cs229.stanford.edu/notes/cs229-notes3.pdf。第一次看这个课程视频可能比较吃力,需要反复的观看视频资源。如果能一步步的follow课程的内容,相信对SVM就会有很好的掌握。

  2.博客资源

  经过第一步的课程资源学习后,如果仍然对SVM一知半解,网络上的优秀博客资源将会是一个很好的补充与加强。

  1)第一篇博客资源是leftnoeasy的SVM博文:http://www.cnblogs.com/LeftNotEasy/archive/2011/05/02/basic-of-svm.html

  2)第二篇博客资源是FreeMind的博文:http://blog.pluskid.org/?page_id=683

  3)第三篇博客资源是Leo Zhang:http://www.cnblogs.com/vivounicorn/

  三个博客的难度从易到难,三篇博客都非常精彩,第一篇博客非常适合作为学习SVM入门型资源,第二篇博客由浅入深的阐释了SVM,似有科学小品之感,最后一篇博客理论性非常强,并在博文最后用python实现了一个SVM分类器,如果想深入的理解SVM,第三个博客是不可错过资源。

  3.论文&书籍资源

  1)论文:

               J.C. Burges的论文:<<A Tutorial on Support Vector Machines for Pattern Recognition>>;  

               Glenn M.Fung的论文:<<knowledge-Based Support Vector Machine Classifiers>>;

               B. E. Boser, I. M. Guyon, and V .Vapnik的论文:<<A Training Algorithm for Optimal Margin Classifiers>>。                    

  2)书籍:

       John Shawe-Taylor & Nello Cristianini 的书:<<Support Vector Machines and other Kernel-based Learning Methods >>;

         机器学习的经典教材,Bishop的书:<<Pattern Recogition and Machine Learing>>,第7章 <<Sparse Kernel Machines>>前面部分是有关SVM的论述;

               Vapnik的经典著作:<<The Nature of Statistical Learning Theory>>。

  4.Tooktiks

  本节介绍SVM比较有名的开源工具:libsvm, svmlight, liblinear。

  Libsvm是由台湾大学林智仁(Lin Chih-Jen)教授等开,国内用的较多一点,Svmlight 由卡内基梅隆大学Thorsten Joachims教授开发的工具包,Liblinear也是有台湾大学林智仁教授团队开发的工具包,针对大规模线性分类问题(大规模文本分类)。

  三个工具包有各自的优点:libsvm与liblinear支持多分类问题,而svmlight并不支持多分类;svmlight与liblinear特别是在数据规模比较大的情况下,要比libsvm快;libsvm直接支持样本后验概率输出,但svmlight与liblinear并不直接支持;libliner仅能处理线性可分的问题。在实际过程中,需要依据自己的任务,选择合适的svm工具。