Переподготовка после перекрестной проверки с помощью libsvm

я знаю, что перекрестная проверка используется для выбора хороших параметров. После их обнаружения мне нужно заново обучить все данные без опции -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 и гаммы?

График выглядит примерно так enter image description here

Тогда значения C равны 2, а гамма = 0,0078125. Но когда я переобучаю модель с новыми параметрами. Значение отличается от 99,63%. Может быть какая-то причина? Заранее спасибо...

17
задан lakesh 30 January 2012 в 05:17
поделиться