支持向量机(SVM)入门
一、简介
支持向量机,一种监督学习方法,因其英文名为support vector machine,故一般简称SVM。
通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。
支持向量机建构一个或多个高维(甚至是无限多维)的超平面来分类数据点,这个超平面即为分类边界。 直观来说,好的分类边界要距离最近的训练数据点越远越好,因为这样可以减低分类器的泛化误差。
在支持向量机中,分类边界与最近的训练数据点之间的距离称为间隔(margin); 支持向量机的目标即为找出间隔最大的超平面来作为分类边界。
支持向量机的支持向量指的就是那些与分类边界距离最近的训练数据点。 从支持向量机的最佳化问题可以推导出一个重要的性质:支持向量机的分类边界可以被那些支持向量决定,而与其他数据点无关。 这也是它们被称为“支持向量”的原因。
注:一个机器学习模型的泛化误差(Generalization error),是一个描述学生机器在从样品数据中学习之后,离教师机器之间的差距的函数。使用这个名字是因为这个函数表明一个机器的推理能力,即从样品数据中推导出的规则能够适用于新的数据的能力。
二、优点
1、可以解决小样本情况下的机器学习问题。
2、可以提高泛化性能。
3、可以解决高维问题。
4、可以解决非线性问题。
5、可以避免神经网络结构选择和局部极小点问题。
三、缺点
1、对缺失数据敏感。
2、对非线性问题没有通用解决方案,必须谨慎选择Kernel function来处理。
四、一般流程
五、实现
1、机器学习库scikit-learn 中Support Vector Machines,python实现
2、IBSVM,由台湾大学林智仁编写。LIBSVM是一个整合了支持向量机(C-SVC, nu-SVC)、回归、分布估计(one-class SVM)的软件。并且支持多类别的分类。
3、LIBLINEAR,主要专门为百万级别的数据和特征实现的线性分类器。
4、dlib库,C++模板实现
5、SVMlight 包,使用C 语言实现的支持向量算法
六、更多资料
支持向量机通俗导论(理解SVM的三层境界)
http://blog.csdn.net/v_july_v/article/details/7624837
1.4. Support Vector Machines
http://scikit-learn.org/stable/modules/svm.html
支持向量机-维基百科
https://zh.wikipedia.org/wiki/%E6%94%AF%E6%8C%81%E5%90%91%E9%87%8F%E6%9C%BA
Support vector machine, From Wikipedia, the free encyclopedia
https://en.wikipedia.org/wiki/Support_vector_machine
各种分类算法的优缺点
http://bbs.pinggu.org/thread-2604496-1-1.html
SVM的优缺点
http://blog.csdn.net/fengzhizizhizizhizi/article/details/23911699
SVMlight Support Vector Machine
dlib C++ library
LIBSVM -- A Library for Support Vector Machines
http://www.csie.ntu.edu.tw/~cjlin/libsvm/
LIBLINEAR -- A Library for Large Linear Classification
http://www.csie.ntu.edu.tw/~cjlin/liblinear
http://www.csie.ntu.edu.tw/~cjlin/papers/liblinear.pdf
LibLinear(SVM包)使用说明之(一)README
http://blog.csdn.net/zouxy09/article/details/10947323/