我正在做一个多类SVM来解决问题。我有4个班级(1,2,3,4)。我也在尝试实现网格搜索方法,以找到C和gamma的最佳值。我改编的代码来自官方FAQ LIBSVM页面:http://www.csie.ntu.edu.tw/~cjlin/libsvm/faq.html#f803
代码中有一个类问题。我试图优化它以适应我的情况。我按照他们在这里写的建议:http://www.csie.ntu.edu.tw/~cjlin/libsvm/faq.html#f507
我试图找到每对两类的最佳参数(C和gamma)(一对一的方法)。我的代码如下:
%# Find best values for c and g using cross validation
bestcv = 0;
for k=1:numLabels
bestcv(k) = 0;
for log2c = -3:3,
for log2g = -5:4,
cmd = ['-v 10 -c ', num2str(2^log2c), ' -g ', num2str(2^log2g)];
cv = svmtrain(double(gridLabel==k), gridData, cmd);
if (cv >= bestcv(k)),
bestcv(k) = cv;
bestc(k) = 2^log2c;
bestg(k) = 2^log2g;
end
fprintf('%g %g %g (best c=%g, g=%g, rate=%g)\n', log2c, log2g, cv, bestc, bestg, bestcv);
end
end
end
然后,在找到最佳参数后,我为每对类(一个对所有类)训练具有不同参数的数据,如下面的代码所示:
model = cell(numLabels,1);
for k=1:numLabels
model{k} = svmtrain(double(trainLabel==k), trainData, ['-c ', num2str(bestc(k)),' -g ', num2str(bestg(k)), ' -b 1']);
end
我的问题是:
我期待着阅读你的意见。