libsvm-mat加强工具箱介绍
转自http://bbs.sciencenet.cn/blog-348249-272606.html
libsvm-mat-加强工具箱介绍
由于libsvm的matlab版本的工具箱libsvm-mat并没有给出寻参的函数模块,而无论利用libsvm工具箱进行分类还是回归,参数的选取是十分重要的,鉴于此libsvm-mat-加强工具箱在libsvm-mat-2.89-3的基础上给出相应的辅助函数插件,方便用户来选取最佳的参数,该加强工具箱可以在MATLAB中文论坛上下载,现对该加强工具箱里主要的辅助函数插件的接口进行介绍,所有的源代码可以到MATLAB中文论坛下载并查看。
归一化函数: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,即默认将训练集和测试都归一化到[0,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,即选取的主成分默认可以达到对原始变量达到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,即默认惩罚参数c的范围是[2^(-8),2^8]。
gmin,gmax:RBF核参数g的变化范围,即在[2^gmin,2^gmax]范围内寻找最佳的RBF核参数g,默认值为gmin=-8,gmax=8,即默认RBF核参数g的范围是[2^(-8),2^8]。
v:进行Cross Validation过程中的参数,即对训练集进行v-fold Cross Validation,默认为3,即默认进行3折CV过程。
cstep,gstep:进行参数寻优是c和g的步进大小,即c的取值为2^cmin,2^(cmin+cstep),…,2^cmax,,g的取值为2^gmin,2^(gmin+gstep),…,2^gmax,默认取值为cstep=1,gstep=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类似,这里不再赘述。