0

Ich bin ein Anfänger von ML.Warum widerspricht meine Fehlerquote bei der Überprüfung der Kreuzvalidierung Testing Dataset Erfolgsrate

Ich versuche 600 Bilder (300 pos und 300 neg) zu verwenden, um die lineare SVM in Matlab zu trainieren; dann habe ich das trainierte Modell auf meine 400 Testbilder angewendet. Wenn ich die Kosten für die lineare SVM auf [0,1; 1,0] festlege, liegt die Ergebniserfolgsrate bei ungefähr 65%, während der Kreuzvalidierungsklassifikationsfehler bei ungefähr 0,28 liegt, dann habe ich verschiedene Kostenwerte ausprobiert und herausgefunden, dass [0,1; x, 0], je höher das x, desto niedriger der Klassifikationsfehler. Was mich jedoch verwirrte, ist, dass während der Klassifikationsfehler abnimmt, die Erfolgsrate ebenfalls drastisch abnimmt. Die folgenden sind meine Code:

% each row represents an image and each column represents a pixel value. 
% each image row has been normalized. 
SVMModel = fitcsvm(imgVector, Class, 'Cost', [0,1;1,0], 'Standardize', true, 'KernelScale', 'auto'); 
% cross validate the model 
CVSVMModel = crossval(SVMModel); 
classLoss = kfoldLoss(CVSVMModel); 

Ich habe auch PCA versucht, die Funktion Dimensionalität zu reduzieren, aber die Einstufung Fehler und Erfolgsquote in der gleichen Art und Weise durchzuführen.

Könnte irgendjemand, der sich dessen bewusst ist, was hier passiert, mich ein bisschen erfreuen? Vielen Dank.

+2

Sie sind wahrscheinlich überanstrengt, d. H. Ihr Modell wird gut beim Klassifizieren der Trainingsdaten, verallgemeinert sich aber schlecht auf neue ungesehene Testdaten ... – Amro

Antwort

0

Je höher der Kostenstreit, desto besser wäre die Vorhersage in der Stichprobe. Der hohe Kostenaufwand würde jedoch auch das Problem der Überanpassung verursachen, was bedeutet, dass er für neu beobachtete Daten nicht so gut vorhersagen würde.