支持向量机是建立在统计学习理论基础之上的新一代机器学习算法,支持向量机的优势主要体现在解决线性不可分问题,它通过引入核函数,巧妙地解决了在高维空间中的内积运算,从而很好地解决了非线性分类问题。
构造出一个具有良好性能的SVM,核函数的选择是关键.核函数的选择包括两部分工作:一是核函数类型的选择,二是确定核函数类型后相关参数的选择.因此如何根据具体的数据选择恰当的核函数是SVM应用领域遇到的一个重大难题,也成为科研工作者所关注的焦点,即便如此,却依然没有得到具体的理论或方法来指导核函数的选取
1、经常使用的核函数
核函数的定义并不困难,根据泛函的有关理论,只要一种函数K(xi,xj)满足Mercer条件,它就对应某一变换空间的内积.对于判断哪些函数是核函数到目前为止也取得了重要的突破,得到Mercer定理和以下常用的核函数类型:
Gauss径向基函数则是局部性强的核函数,其外推能力随着参数σ的增大而减弱。多项式形式的核函数具有良好的全局性质。局部性较差。
采用Sigmoid函数作为核函数时,支持向量机实现的就是一种多层感知器神经网络,应用SVM方法,隐含层节点数目(它确定神经网络的结构)、隐 含层节点对输入节点的权值都是在设计(训练)的过程中自动确定的。而且支持向量机的理论基础决定了它最终求得的是全局最优值而不是局部最小值,也保证了它 对于未知样本的良好泛化能力而不会出现过学习现象。
2、核函数的选择
在选取核函数解决实际问题时,通常采用的方法有:一是利用专家的先验知识预先选定核函数;
二是采用Cross-Validation方法,即在进行 核函数选取时,分别试用不同的核函数,归纳误差最小的核函数就是最好的核函数.如针对傅立叶核、RBF核,结合信号处理问题中的函数回归问题,通过仿真实 验,对比分析了在相同数据条件下,采用傅立叶核的SVM要比采用RBF核
的SVM误差小很多.
三是采用由Smits等人提出的混合核函数方法,该方法较之前两者是目前选取核函数的主流方法,也是关于如何构造核函数的又一开创性的工作.将不同的核函数结合起来后会有更好的特性,这是混合核函数方法的基本思想.
MATLAB中的SVM的使用
SVMStruct=svmtrain(Training,Group)
%svmtrain的输入为样本点training和样本的分类情况group,输出为一个分类器svmstruct.
核函数,核参数,和计算方法等都是可选的,如SVMStruct = svmtrain(…, ‘Kernel_Function’, Kernel_FunctionValue, …)
但是切记切记一定要成对出现。
然后,将分类器和testing sample带入svmclassify中,可以得到分类结果和准确度。
举个例子
svmStruct=svmtrain(data(train,:),groups(train),’Kernel_Function’,\'rbf’,\'Kernel_FunctionValue’,’5′,’showplot’,true);
%用了核宽为5的径向基核,且要求作图
% 这里我觉得原作者的写法有误,应该是svmStruct = svmtrain(data(train,:),groups(train),... \'Kernel_Function\',\'rbf\',\'RBF_Sigma\',5,\'showplot\',true);
classes = svmclassify(svmStruct,data(test,:),’showplot’,true);
%要求输出检测样本点的分类结果,且画图表示。
更多关于SVM的内容:http://blog.pluskid.org/?page_id=683
pluskid的博客
请发表评论