我知道交叉验证用于选择好的参数。找到它们后,我需要在没有 -v 选项的情况下重新训练整个数据。
但我面临的问题是,在我使用 -v 选项进行训练后,我得到了交叉验证准确度(例如 85%)。没有模型,我看不到 C 和 gamma 的值。在这种情况下,我该如何重新培训?
顺便说一句,我应用了 10 倍交叉验证。例如
optimization finished, #iter = 138
nu = 0.612233
obj = -90.291046, rho = -0.367013
nSV = 165, nBSV = 128
Total nSV = 165
Cross Validation Accuracy = 98.1273%
需要一些帮助。
为了获得最好的 C 和 gamma,我使用了 LIBSVM FAQ 中提供的这段代码
bestcv = 0;
for log2c = -6:10,
for log2g = -6:3,
cmd = ['-v 5 -c ', num2str(2^log2c), ' -g ', num2str(2^log2g)];
cv = svmtrain(TrainLabel,TrainVec, cmd);
if (cv >= bestcv),
bestcv = cv; bestc = 2^log2c; bestg = 2^log2g;
end
fprintf('(best c=%g, g=%g, rate=%g)\n',bestc, bestg, bestcv);
end
end
另一个问题:使用 -v 选项后的交叉验证准确性是否类似于我们在没有 -v 选项的情况下进行训练并使用该模型进行预测时得到的准确性?这两个精度相似吗?
另一个问题:交叉验证通过避免过度拟合基本上提高了模型的准确性。因此,在改进之前,它需要有一个模型。我对吗?除此之外,如果我有不同的模型,那么交叉验证的准确性会有所不同吗?我对吗?
再问一个问题:在交叉验证准确率中,C 和 gamma 的值是多少呢?
图表是这样的
那么 C 的值为 2 并且 gamma = 0.0078125。但是当我用新参数重新训练模型时。该值与 99.63% 不同。有什么理由吗?提前致谢...