2015-03-20 2 views
1

Чтобы найти лучшие параметры, которые будут использоваться с libsvm, я использовал приведенный ниже код. Вместо «./heart_scale» у меня был файл, содержащий положительные и отрицательные примеры, каждый с вектором hog в формате libsvm. У меня было 1000 положительных примеров и 4000 отрицательных. Однако они были приведены в порядок, то есть 1 000 примеров были положительными, а другие были отрицательными.Перекрестная проверка с помощью libsvm для поиска наилучших параметров

Вопрос: Теперь я пришел к сомнению, является ли точность, возвращаемая этим кодом, фактической точностью. Это связано с тем, что, когда я читаю 5-кратное кросс-валидацию, он берет первые 4/5 данных в качестве тренировки, а 1/5 - для тестирования. Означает ли это, что это может быть так, что набор тестов отрицательный? Или это случайные примеры?

%# read some training data 
[labels,data] = libsvmread('./heart_scale'); 

%# grid of parameters 
folds = 5; 
[C,gamma] = meshgrid(-5:2:15, -15:2:3); 

%# grid search, and cross-validation 
cv_acc = zeros(numel(C),1); 
for i=1:numel(C) 
    cv_acc(i) = svmtrain(labels, data, ... 
        sprintf('-c %f -g %f -v %d', 2^C(i), 2^gamma(i), folds)); 
end 

%# pair (C,gamma) with best accuracy 
[~,idx] = max(cv_acc); 

%# contour plot of paramter selection 
contour(C, gamma, reshape(cv_acc,size(C))), colorbar 
hold on 
plot(C(idx), gamma(idx), 'rx') 
text(C(idx), gamma(idx), sprintf('Acc = %.2f %%',cv_acc(idx)), ... 
    'HorizontalAlign','left', 'VerticalAlign','top') 
hold off 
xlabel('log_2(C)'), ylabel('log_2(\gamma)'), title('Cross-Validation Accuracy') 

%# now you can train you model using best_C and best_gamma 
best_C = 2^C(idx); 
best_gamma = 2^gamma(idx); 
%# ... 

ответ

0

Вы можете найти ответ на свой вопрос в исходном коде LIBSVM. См. Функцию svm_cross_validation в svm.cpp.

Как вы можете видеть, для классификации кросс-валидации проблема LIBSVM сначала выполняет класс grouping и чем перетасовку.

Итак, ответьте на ваш вопрос: да, точность, возвращаемая этим кодом, является фактической точностью.

Примечание: оценка точности зависит также от характера данных, количества перекрестных валидностей и сама по себе является случайным значением с некоторым распределением.

Смежные вопросы