网格搜索一级svm

时间:2014-12-20 16:59:45

标签: matlab svm libsvm

我修改了LIBSVM为cv网格搜索提出的代码,以便对单类SVM执行网格搜索。因此,我需要搜索最佳的nu和gamma对,而不是搜索c。我将C值的范围更改为值0.5(默认为libsvm),0.6,7.0,0.8,0.9,因为nu需要取值(0,1)。 我得到的结果是,随着nu的增加,交叉验证的准确性提高,因此最终nu = 0.9是nu的最佳参数。当我尝试训练SVM而不执行交叉验证网格搜索时,就是这种情况,只需在(0.5,0.9)范围内更改nu。

然而,对于nu的所有参数,测试结果保持不变。我的问题是,nu值的变化是否会影响测试的准确性?

这是LIBSVM为网格搜索提出的代码。

codbestcv = 0;
for log2c = -1:3,
  for log2g = -4:1,
    cmd = ['-v 5 -c ', num2str(2^log2c), ' -g ', num2str(2^log2g)];
    cv = svmtrain(heart_scale_label, heart_scale_inst, cmd);
    if (cv >= bestcv),
      bestcv = cv; bestc = 2^log2c; bestg = 2^log2g;
    end
    fprintf('%g %g %g (best c=%g, g=%g, rate=%g)\n', log2c, log2g, cv, bestc, bestg, bestcv);
  ende that follows: 

0 个答案:

没有答案