您的位置:首页 > 其它

libsvm-mat-加强工具箱介绍

2016-03-08 18:36 393 查看
libsvm-mat-加强工具箱介绍

由于libsvm的matlab版本的工具箱libsvm-mat并没有给出寻参的函数模块,而无论利用libsvm工具箱进行分类还是回归,参数的选取是十分重要的,鉴于此libsvm-mat-加强工具箱在libsvm-mat-2.89-3的基础上给出相应的辅助函数插件,方便用户来选取最佳的参数,现对该加强工具箱里主要的辅助函数插件的接口进行介绍

归一化函数:scaleForSVM

[train_scale,test_scale,ps]= scaleForSVM(train_data,test_data,ymin,ymax)

输入:

train_data:训练集,格式要求与svmtrain相同。

test_data:测试集,格式要求与svmtrain相同。

ymin,ymax:归一化的范围,即将训练集和测试都归一化到[ymin,ymax],不输入时,默认值为ymin=0,ymax=1

输出:

train_scale:归一化后的训练集。

test_scale:归一化后的测试集。

ps:归一化过程中的映射(方便反归一化使用)。

pca降维预处理函数:pcaForSVM

[train_pca,test_pca] = pcaForSVM(train_data,test_data,threshold)

输入:

train_data:训练集,格式要求与svmtrain相同。

test_data:测试集,格式要求与svmtrain相同。

threshold:对原始变量的解释程度([0,100]之间的一个数),不输入时,默认为90

输出:

train_pca:进行pca降维预处理后的训练集。

test_pca:进行pca降维预处理后的测试集。

网格参数寻优函数(分类问题):SVMcgForClass

[bestCVaccuracy,bestc,bestg]=SVMcgForClass(train_label,train,cmin,cmax,gmin,gmax,v,cstep,gstep,accstep)

输入:

train_label:训练集的标签,格式要求与svmtrain相同。

train:训练集,格式要求与svmtrain相同。

cmin,cmax:惩罚参数c的变化范围,即在[2^cmin,2^cmax]范围内寻找最佳的参数c,默认值为cmin=-8,cmax=8

gmin,gmax:RBF核参数g的变化范围,即在[2^gmin,2^gmax]范围内寻找最佳的RBF核参数g,默认值为gmin=-8,gmax=8

v:进行Cross Validation的参数,即对训练集进行v-fold Cross Validation,默认为3

cstep,gstep:进行参数寻优是c和g的步进大小,即c的取值为2^cmin,2^(cmin+cstep),…,2^cmax,默认均为1

accstep:最后参数选择结果图中准确率离散化显示的步进间隔大小([0,100]之间的一个数),默认为4.5。

输出:

bestCVaccuracy:最终CV意义下的最佳分类准确率。

bestc:最佳的参数c。

bestg:最佳的参数g。

网格参数寻优函数(回归问题):SVMcgForRegress

[bestCVmse,bestc,bestg]=

SVMcgForRegress(train_label,train,cmin,cmax,gmin,gmax,v,cstep,gstep,msestep)

其输入输出与SVMcgForClass类似

利用PSO参数寻优函数(分类问题):psoSVMcgForClass

[bestCVaccuracy,bestc,bestg,pso_option]=psoSVMcgForClass(train_label,train,pso_option)

输入:

train_label:训练集的标签,格式要求与svmtrain相同。

train:训练集,格式要求与svmtrain相同。

pso_option:PSO中的一些参数设置,可不输入,有默认值,详细请看代码的帮助说明。

输出:

bestCVaccuracy:最终CV意义下的最佳分类准确率。

bestc:最佳的参数c。

bestg:最佳的参数g。

pso_option:记录PSO中的一些参数。

利用PSO参数寻优函数(回归问题):psoSVMcgForRegress

[bestCVmse,bestc,bestg,pso_option]=psoSVMcgForRegress(train_label,train,pso_option)

其输入输出与psoSVMcgForClass类似

利用GA参数寻优函数(分类问题):gaSVMcgForClass

[bestCVaccuracy,bestc,bestg,ga_option]=gaSVMcgForClass(train_label,train,ga_option)

输入:

train_label:训练集的标签,格式要求与svmtrain相同。

train:训练集,格式要求与svmtrain相同。

ga_option:GA中的一些参数设置,可不输入,有默认值,详细请看代码的帮助说明。

输出:

bestCVaccuracy:最终CV意义下的最佳分类准确率。

bestc:最佳的参数c。

bestg:最佳的参数g。

ga_option:记录GA中的一些参数。

利用GA参数寻优函数(回归问题):gaSVMcgForRegress

[bestCVmse,bestc,bestg,ga_option]=gaSVMcgForRegress(train_label,train,ga_option)

其输入输出与gaSVMcgForClass类似。

参数寻优函数选择

一般情况下不推荐使用遗传算法或粒子群优化算法,因为这些算法相对复杂,而且耗时又不一定能找到全局最优解

建议在交叉验证过程中使用简单的GridSearch算法找到最佳的C和gamma。

转载自:http://bbs.sciencenet.cn/blog-348249-272606.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: