支持向量机SVM理论到实践一:SVM支持向量机的简介
本章的学习目标:
1)SVM:支持向量机的简介
2)支持向量机与传统机器学习算法相比的优点
3)为什么需要SVM的核函数
4)SVM中常用的四种核函数
5)OpenCv中核函数的定义
1)SVM:支持向量机的简介
传统的模式识别技术只考虑训练样本的拟合情况,并且以最小化分类器在训练样本上的分类错误为目的;通过在训练过程中给分类器提供充足的训练样本以便获得分类器在没有见过的样本上的识别率。但是,对于少量的训练样本集合来说,我们并不能保证传统的机器学习算法在简单的训练之后就可以拥有很好的识别率(在没有见过的样本上)。
支持向量机SVM基于结构化风险最小的原则,其中结构化风险具体的来说可以分为两类:
1)经验风险(训练阶段的训练误差)
2)期望风险/预测风险(预测阶段的预测误差)
SVM结构化风险最小化原则具体体现在两点:
1)分类模型的选择上(线性可分模型---线性不可分模型)
2)模型参数的选择上
2)支持向量机与传统机器学习算法相比的优点
1)小样本:并不是说样本的绝对数量少(实际上,对任何算法来说,更多的样本几乎总能带来较好的效果),而是说与问题的复杂度比起来,SVM算法要求的样本数是相对比较少的。SVM解决问题的时候,和样本的维数是无关的(甚至样本是上万维的都可以,这使得SVM很适合用来解决文本分类的问题,当然,有这样的能力也是因为引入了核函数)
2)结构风险小:对问题真实模型的逼近与问题真实解之间的误差,就叫做风险。
3)非线性:是指SVM擅长应付训练样本的数据是线性不可分的情况,主要是通过松弛变量和核函数技术来实现的,这一部分是SVM的精髓。(关于文本分类这个问题究竟是不是线性可分的,现在尚没有什么定论,因此,不能简单的认为它就是线性可分的)
最后一点要说的是:SVM的强大离不开一个很重要的东西---核函数
3)为什么需要SVM的核函数
线性分类器的分类性能毕竟是有限的,而对于非线性问题,一味的放宽约束条件,只能导致大量样本的错分,这时就可以通过非线性变换(核函数)将其转换为某个高维空间中的线性问题,在变换空间中求得最佳的分类超平面。
也就是说,在很多情况下,低维空间的向量集是难于划分的,解决办法是将它们映射到高维空间。但是这个办法带来的问题就是计算所有样本的非线性映射到变换空间中,计算点积是一件非常困难的问题。幸运的是,核函数可以巧妙的解决这一问题。也就是说,只要我们选取合适的核函数,就可以获得高维空间的分类函数(分类超平面)。在SVM理论中,采取不合适的核函数将会导致SVM的错误分类,但是大家不用担心,核函数的选取一般不是很困难。在确定了核函数的问题之后,因为确定核函数的已知数据也必然存在误差,所以还需要引入错误代价系数进行矫正。
其实核函数的本质作用可以简单的概括为:将低维空间的线性不可分问题,借助核函数转化为高维空间的线性可分问题,进而可以在高维空间找到分类的最优超平面实现问题的正确分类。(下图引用自July,s支持向量机通俗导论(理解SVM的三层境界))。如要分类下图的红色和蓝色样本点:
二维线性不可分问题 三维空间线性可分
4)SVM中常用的四种核函数
SVM中,常用的核函数可以分为四类,如下所示:
3)线性核函数:
4)多项式和函数::POLY:
5)径向基核函数::RBF
6)Sigmod核函数:
5)OpenCv中核函数的定义:
1)OpenCv中的线性核函数:
2)多项式和函数::POLY:
3)径向基核函数::RBF:
4)Sigmoid函数内核:
参考文献:http://blog.csdn.net/liukun321/article/details/41574617