Как повысить точность классификации с помощью опорных векторов - PullRequest
2 голосов
/ 12 января 2020

У меня есть 7 классов входов, которые связаны с активностью сигналов мозга (ЭЭГ). Когда количество классов большое, это может повлиять на производительность алгоритмов классификации. Как вы можете видеть в следующем коде, я извлек функции для них, и на первом этапе я обучил свою модель 70% моих данных и получил 100% точность, но на этапе тестирования с оставшимися 30% я не получил точность более 42,5%. Что вы предлагаете улучшить точность моей модели?

for i=1:7
    [A D]=dwt2(segment_train(i).train,'db1');
    wave_train(i).A=A;
    wave_train(i).D=D;
    f1=mean(A);
    f2=median(A);
    f3=max(D);
    f4=abs(fft(D));
    f4=mean(f4);
    f5=var(D);
    f6=skewness(D);
    f7=entropy(D);
    f8=var(A);
    f9=mean(D);
    f(i,:)=[f1 f2  f3 f4 f5 f6 f7 f8 f9];
end

% feature extraction
% Classifier
nOfSamples=7;
nOfClassInstance=10;
Sample=f;
class=[1 2 3 4 5 6 7]'
%SVM 
Model=fitcecoc(Sample,class);
predictt=predict(Model,Sample);
disp('class predict')
disp([class predictt])

%Accuracy
Accuracy=mean(class==predictt)*100;
fprintf('\nAccuracy =%d\n',Accuracy)

1 Ответ

0 голосов
/ 12 января 2020

Вопрос немного шире. Тем не менее, это хорошая идея изучить распределение меток классов.

Возможно, распределение классов искажено? Может случиться так, что некоторые классы появляются намного больше, чем другие. Существуют различные способы противодействия этому, такие как выборка вверх / вниз, взвешивание ошибки классов с недостаточной выборкой с большим коэффициентом, и т. Д. c. Было бы неплохо изучить этот вопрос в режиме онлайн.

При этом, похоже, что вы перегружаете модель. Вы также можете изучить регуляризацию для борьбы с низким показателем теста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...