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。