2014-11-11 8 views
0

분류를 위해 libsvm을 사용하고 있습니다. 교차 유효성 검사를 사용하여 C 및 감마 매개 변수를 조정합니다. 아니. 교차 검증을 위해 사용하는 관측치의 수는 약 6000 ~ 7000입니다. 그러나 그것은 MATLAB이 매개 변수를 조정하는 데 엄청난 시간을 필요로합니다. 그것은 데이터 세트의 크기 때문입니까 아니면 코드를 최적화해야합니까 ?? 코드의libsvm matlab에 대한 교차 유효성 검사를 최적화하는 방법은 무엇입니까?

예 :

[labels,data] = libsvmread('newwndwlibfeatures.txt'); 

labels_stem=labels(labels==1); 
feature_stem=data(labels==1,:); 
labels_nostem=labels(labels~=1); 
feature_nostem=data(labels~=1,:); 
L=randperm(length(labels_nostem)); 
labels_nostem=labels_nostem(L); 
feature_nostem=feature_nostem(L,:); 
labelscv=[labels_stem; labels_nostem(1:round(.05*length(labels_nostem)))]; 
featurecv=[feature_stem; feature_nostem(1:round(.05*length(labels_nostem)),:)]; 
weight=[length(labels_stem)/(length(labels_stem)+round(.05*length(labels_nostem))) ... 
     round(.05*length(labels_nostem))/(length(labels_stem)+round(.05*length(labels_nostem)))]; 

[C,gamma] = meshgrid(-15:1:10, -15:1:6); 
% 
folds=5; 
%# grid search, and cross-validation 
cv_acc = zeros(numel(C),1); 

for i=1:numel(C) 
    cv_acc(i) = svmtrain(labelscv, featurecv, ... 
        sprintf('-c %f -g %f -h 0 -v %d -w0 %d -w1 %d', 2^C(i), 2^gamma(i), folds,weight)); 
end 

답변

0

데이터 집합의 크기는 문제가되지 않습니다. 525 개의 공간을 엄격하게 5 번 검색하고 있습니다. 각 폴드가 몇 초 걸리면 완료하는 데 몇 시간이 걸립니다. (25 행 * 21 열 5 배 2 초/60 초) 모든 조합을 검사하는 것보다 똑똑한 최적화 방법을 사용합니다.

또한 정확하게 기억한다면 : 내 논문을 만들었을 때 같은 문제가 발생했고 C 값 중 일부가 기하 급수적으로 길어졌습니다.