2
나는 SVM 분류기 [SVM = Support Vector Machine]라고 생각되는 것을 작성했습니다. 다른 매개 변수를 사용하여 정상적으로 분산 된 데이터로 "테스트"하면 분류 기준이 50 %의 정확도를 반환합니다. 뭐가 잘못 되었 니? 여기 명확하게 분리 가능한 데이터의 확률 수준 정확도
코드입니다, 결과는 재현 할 수 있어야한다 : 당신은 제대로 정확도를 계산하지 않는features1 = normrnd(1,5,[100,5]);
features2 = normrnd(50,5,[100,5]);
features = [features1;features2];
labels = [zeros(100,1);ones(100,1)];
%% SVM-Classification
nrFolds = 10; %number of folds of crossvalidation
kernel = 'linear'; % 'linear', 'rbf' or 'polynomial'
C = 1; % C is the 'boxconstraint' parameter.
cvFolds = crossvalind('Kfold', labels, nrFolds);
for i = 1:nrFolds % iterate through each fold
testIdx = (cvFolds == i); % indices test instances
trainIdx = ~testIdx; % indices training instances
% train the SVM
cl = fitcsvm(features(trainIdx,:), labels(trainIdx),'KernelFunction',kernel,'Standardize',true,...
'BoxConstraint',C,'ClassNames',[0,1]);
[label,scores] = predict(cl, features(testIdx,:));
eq = sum(labels(testIdx));
accuracy(i) = eq/numel(labels(testIdx));
end
crossValAcc = mean(accuracy)
예 총 버그는 지금 당장 깨달았습니다. 질문 : 그렇지 않으면 전체 논리가 맞습니까? 나는 하이퍼 파라미터 (여기에서와 같이)를 최적화하지 않을 때이 유효성 검사 정확도가 새 테스트 세트에서 내 분류 자의 정확도와 같다고 생각하십니까? – Pegah
@ 페가 정말로 당신의 논리는 완벽합니다. 이 경우 하이퍼 매개 변수를 최적화하지 않은 경우, 형상 공간이 완전히 선형으로 분리 가능하면 각 접기에서 교차 유효성 검사의 정확도가 일치해야 평균이 실제 정확도와 일치해야합니다. 두 가지 데이터 분포가 겹치지 않도록 인위적으로 서로 다른 수단으로 인위적으로 데이터 세트를 만들었으므로 각 폴드에서 동일한 교차 유효성 검사가 반드시 이루어져야합니다. – rayryeng
은 의미가 있습니다, thx 대단히 – Pegah