train_label=data(1:50,1); train_data=data(1:50,2:14);
[bestCVmse,bestc,bestg,ga_option]=gaSVMcgForRegress(train_label,train_data) cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg),' -s 3 –t 2 -p 0.01']; model=svmtrain(train_label,train_data,cmd);
[ptrain,mse,dec_value]=svmpredict(train_label,train_data,model); 结果:
bestCVmse = 1.8944e+004 bestc = 59.5370 bestg = 778.3573 ga_option =
maxgen: 200 sizepop: 20
ggap: 0.9000 cbound: [0 100] gbound: [0 1000] v: 5
Mean squared error = 10426.1 (regression)
Squared correlation coefficient = 0.622133 (regression)
3.基于pso寻优(在这里使用启发式算法PSO来进行参数寻优,用网格划分(grid search)来寻找最佳的参数c和g,虽然采用网格搜索能够找到在CV意义下的最高的分类准确率,即全局最优解,但有时候如果想在更大的范围内寻找最佳的参数c和g会很费时,采用启发式算法就可以不必遍历网格内的所有的参数点,也能找到全局最优解) 代码:
train_label=data(1:50,1); train_data=data(1:50,2:14);
[bestCVmse,bestc,bestg,pso_option]=psoSVMcgForRegress(train_label,train_data) cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg),' -s 3 –t 2 -p 0.01']; model=svmtrain(train_label,train_data,cmd);
[ptrain,mse,dec_value]=svmpredict(train_label,train_data,model); 结果:
bestCVmse = 1.5761e+004 bestc = 49.4305 bestg = 0.0100 pso_option =
c1: 1.5000 c2: 1.7000 maxgen: 200 sizepop: 20
k: 0.6000 wV: 1 wP: 1 v: 5 popcmax: 100 popcmin: 0.1000 popgmax: 1000 popgmin: 0.0100
Mean squared error = 12480.9 (regression)
Squared correlation coefficient = 0.434221 (regression) 注意:仍是以前50组样本为例
Part3:主元分析
仍然以RBF为核函数,进行主元分析之后参数优化,最终得到MSE 代码:
train_label=data(1:50,1); train_data=data(1:50,2:14); test_label=data(51:100,1); test_data=data(51:100,2:14);
[train_pca,test_pca] = pcaForSVM(train_data,test_data,97);%主元分析 [bestmse,bestc,bestg] = SVMcgForRegress(train_label,train_pca) cmd = ['-c ',num2str(bestc),' -g ',num2str(bestg),' -s 3 –t 1 -p 0.01']; [ptrain,mse,dec_value]=svmpredict(train_label,train_pca,model); 结果:
Mean squared error = 12555.9 (regression)
Squared correlation coefficient = 0.552186 (regression)