я знаю, что перекрестная проверка используется для выбора хороших параметров. После их обнаружения мне нужно заново обучить все данные без опции -v.
Но проблема, с которой я столкнулся, заключается в том, что после тренировки с параметром -v я получаю точность перекрестной проверки (например, 85%). Нет модели, и я не вижу значений C и гаммы. В таком случае, как мне переобучиться?
Между прочим, я применяю 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 и гамму, я использую этот код, который доступен в 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 и гаммы?
График выглядит примерно так
Тогда значения C равны 2, а гамма = 0,0078125. Но когда я переобучаю модель с новыми параметрами. Значение отличается от 99,63%. Может быть какая-то причина? Заранее спасибо...