轉自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類似,這里不再贅述。