SVM方法的基本思想是:定义最优线性超平面,并把寻找最优线性超平面的算法归结为求解一个最优化(凸规划)问题。进而基于Mercer核展开定理,通过非线性映射,把样本空间映射到一个高维乃至于无穷维的特征空间(Hibert空间),使得在特征空间中可以应用线性学习机的方法解决样本空间中的高度非线性分类和回归等问题。简单地说就是实现升维和线性化。
最后,在学习SVM前,我们再来看一下SVM的优点:
SVM是一种有坚实理论基础的新颖的小样本学习方法。它基本上不涉及概率测度的定义及大数定律等,因此不同于现有的统计方法。从本质上看,它避开了从归纳到演绎的传统过程,实现了高效的从训练样本到预报样本的转导推理,大大简化了通常的分类和回归等问题。与常规的统计方法相比,SVM方法具有如下特点:
-
SVM的最终决策函数只由少数的支持向量所决定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了“维数灾”。如果说神经网络方法是对样本的所有因子加权的话,SVM方法则是对只占样本集少数的关键样本(Support Vector)“加权”。
-
少数支持向量决定于最优结果,这不但可以帮助我们抓住关键样本、剔除大量冗余样本,而且注定了该方法不但算法简单,而且具有较好的“鲁棒性”。
-
由于有较为严格的统计学习理论作为保证,可以对用SVM方法建立模型的推广(泛化)能力做出评估。
-
建立任何一个数据模型,人为的干预越少越客观。与其他方法相比,建立SVM模型所需要的先验干预较少。
-
SVM通过核函数实现低维到高维空间的非线性映射,所以适合于解决本质上非线性的分类、回归等问题。
现在我们来总结一下支持向量机的训练和分类的步骤:
-
训练:选取合适的核函数,K(Xi,Xj);(有意思的是,选取核函数时常并不关键,诸如多项式核函数、各向相异多项式核函数、径向基核函数等的分类器的性能常常是可以比拟的,见参考文献[1]、[2])
-
求出最小化||w||;
-
只存储非零的alpha_i和相应的训练向量Xi(支持向量);
-
分类:对于模式X,用支持向量Xi和相应的权重alpha_i计算判别函数式。
推荐的中文博客
Free Mind 的支持向量机系列文章,能够让你快速地掌握SVM的相关概念和原理;
July 整理的支持向量机通俗导论,比较全地介绍了SVM的各个过程;
如果你想透彻地理解SVM,而且English不错,那么下面几个Tutorial是最经典的:
A tutorial on support vector machines for pattern recognition. 这一篇主要是从模式识别角度介绍SVM,讲解挺好的,如果完整看完,基本上可以掌握SVM的常见应用。
A tutorial on support vector Regression. 这一篇和上面一篇不是很一样,和Stanford的ML中的SVM一样,从Regression介绍。
Support vector machine 这是一篇老文章,1998年的经典文章。
参考文献
[1] Advances in kernel methods: support vector learning[M]. The MIT press, 1999.
[2] Hearst M A, Dumais S T, Osman E, et al. Support vector machines[J]. Intelligent Systems and their Applications, IEEE, 1998, 13(4): 18-28.
[3] 陈永义, 熊秋芬. 支持向量机方法应用教程[M]. 气象出版社, 2011.
[4] 松卡, 赫拉瓦奇, 博伊尔. 图像处理, 分析与机器视觉[M]. 人民邮电出版社, 2002.