SVR (Support Vector Regression)의 RBF 커널에 대해 최상의 매개 변수 인 감마와 C를 선택하기 위해 교차 유효성 검사를 수행하고 싶습니다. LIBSVM을 사용하고 있습니다. 3D 메쉬 그룹 4 개가 포함 된 데이터베이스가 있습니다. 제 질문은 입니다. 제가 사용하고있는 접근 방식은 4 배 교차 검증입니까? RBF Kernal의 C와 Gamma 매개 변수를 선택하기 위해 예측 된 값과 groud_truth_values 사이의 오차를 최소화해야한다고 생각합니다.SVM 회귀 분석 교차 응답
[C,gamma] = meshgrid(-5:2:15, -15:2:3); %range of values for C and
%gamma
%# grid search, and cross-validation
for m=1:numel(C)
for k=1:4
fid1 = fopen(sprintf('list_learning_%d.txt',k), 'rt');
i=1;
while feof(fid1) == 0
tline = fgetl(fid1);
v= load(tline);
v=normalize(v);
matrix_feature_tmp(i,:)=v;
i=i+1;
end
fclose(fid1);
% I fill matrix_feature_train of size m by n via matrix_feature_tmp
%%construction of the test matrix
fid2 = fopen(sprintf('liste_features_test%d.txt',k), 'rt');
i=1;
while feof(fid2) == 0
tline = fgetl(fid2);
v= load(tline);
v=normalize(v);
matrice_feature_test_tmp(i,:)=v;
i=i+1;
end
fclose(fid2);
%I fill matrix_feature_test of size m by k via matrix_feature_test_tmp
mos_learning=load(sprintf('mos_learning_%d.txt',k));
mos_wanted=load(sprintf('mos_test%d.txt',k));
model = svmtrain(mos_learning, matrix_feature_train',sprintf('-
s %f -t %f -c %f -g %f -p %f ',3,2 ,2^C(m),2^gamma(m),1));
[y_hat, Acc, projection] = svmpredict(mos_wanted,
matrix_feature_test', model);
MSE_Test = mean((y_hat-mos_wanted).^2);
vecc_error(k)=MSE_Test;
end
mean_vec_error_fold(m)=mean(vecc_error);
end
%select the best gamma and C
[~,idx]=min(mean_vec_error_fold);
best_C = 2^C(idx);
best_gamma = 2^gamma(idx);
%training with best parameters
%for example
model = svmtrain(mos_learning1, matrice_feature_train1',sprintf('-s
%f -t %f -c %f -g %f -p %f ',3,2 ,best_C, best_gamma,1));
[y_hat_final, Acc, projection] = svmpredict(mos_test1,matrice_feature_test1',
model);
안녕하세요, 1) 내 게시물에서 SVMTRAIN의 호출이 구조 모델이 아닌 평균 제곱 오류를 반환하도록 지정했습니다 (옵션 -V를 사용하여 SVTMTRAIN을 호출한다는 사실을주의하십시오). 그래서, 나는 cv_acc 벡터가 각 쌍 (C, 감마)과 관련된 오류를 포함하기 때문에 min (cv_acc)의 사용이 정확하다고 생각합니다. 2) 폴드를 변경하기 위해 중첩 루프를 사용해야합니다. 나는 편집 할 것이다. 3) 나중에 최상의 매개 변수를 선택하기 위해 교차 유효성 검사의 오류를 최소화해야한다고 생각했습니다. – Anass
@Anass 교육 오류가 여전히 잘못된 경우 매개 변수 집합이 최상의 교육 오류를 제공하는지 상관하지 않습니다. 교차 검증 오류가 걱정됩니다. 그래서 3 배로 훈련하고, SVM 모델을 반환하고, 그 모델을 사용하여 4 배로 예측하고, MSE를 계산하고, 4 회 수행하고, 오류를 집계하고, 해당 매개 변수 집합에 대한 교차 검증 * 오류를 집계합니다. 그런 다음 테스트 할 모든 매개 변수 조합에 대해이를 반복하고 각 매개 변수 조합에 대해 교차 유효성 검사 오류의 최소값 만 신경 씁니다. – Dan
고맙습니다. 나는 이것을 시도하고 내 게시물을 편집하여 결과를 보여줍니다. – Anass