2016-10-14 1 views
2

Die Perfcurve-Funktion in Matlab fälschlicherweise behauptet AUC = 1, wenn zwei Datensätze eindeutig für angemessene Cutoff-Werte falsch klassifiziert werden. Wenn ich die gleichen Daten durch eine Konfusionsmatrix mit Cutoff 0.5 laufen lasse, liegt die Genauigkeit zu Recht unter 1. Das MWE enthält Daten von einem meiner Falten. Ich habe das Problem bemerkt, weil ich perfekte Ergebnisse mit weniger als perfekter Genauigkeit gesehen habe.Matlab Funktion Perfcurve behauptet fälschlicherweise ROC AUC = 1

Ich benutze Matlab 2016a und Ubuntu 16.4 64bit.

% These are the true classes in one of my test-set folds 
classes = transpose([ones(1,9) 2*ones(1,7)]) 
% These are predictions from my classifier 
% Class 1 is very well predicted 
% Class 2 has two records predicted as class 1 with threshold 0.5 
confidence = transpose([1.0 1.0 1.0 1.0 0.9999 1.0 1.0... 
    1.0 1.0 0.0 0.7694 0.0 0.9917 0.0 0.0269 0.002]) 
positiveClass = 1 
% Nevertheless, the AUC yields a perfect 1 
% I understand why X, Y, T have less values than classes and confidence 
% Identical records are dealt with by one point on the ROC curve 
[X,Y,T,AUC] = perfcurve(classes, confidence, positiveClass) 
% The confusion matrix for comparison 
threshold = 0.5 
confus = confusionmat(classes,(confidence<threshold)+1) 
accuracy = trace(confus)/sum(sum(confus)) 

Antwort

0

Dies bedeutet einfach, dass es andere Cutoff, wo die Trennung perfekt.

Versuchen:

threshold = 0.995 
confus = confusionmat(classes,(confidence<threshold)+1) 
accuracy = trace(confus)/sum(sum(confus)) 
+0

Aber roc führt einen Sweep über Cutoffs sowieso. Also, wenn Sie auf die Ausgabe von X, Y und T auf der Konsole zum Beispiel schauen: 0.9917 0.7694 – user7019377

+0

@ user7019377 Es fegt durch alle möglichen Cutoffs und finden Sie, dass einer von ihnen eine perfekte Trennung hat, so erhalten Sie AUC = 1. – Calimo

+0

Schwellenwerte von 0,9917 und 0,7694 in T zum Beispiel werden dazu führen, diese Klasse-2-Beispiele als Klasse 1 zu klassifizieren. Doch Y steht für perfektes TPR (Spezifität) und X für kein FPR (perfekte Empfindlichkeit). (Gepresste Eingabe zu früh aus Versehen, kann nicht finden Bearbeitungsschaltfläche, da ich hier neu bin.) – user7019377

Verwandte Themen