2016-10-14 2 views
2

Функция perfcurve в Matlab ложно, утверждает AUC = 1, когда две записи явно ошибочно классифицированы для разумных значений отсечки. Если я запускаю одни и те же данные через матрицу путаницы с отсечкой 0,5, точность по праву ниже 1. MWE содержит данные из одной из моих складок. Я заметил проблему, потому что я видел идеальный auc с меньшей точностью, чем мои результаты.Функция Matlab perfcurve ложно утверждает ROC AUC = 1

Я использую Matlab 2016a и 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)) 

ответ

0

Это просто означает, что есть другой отсечка где разделение является совершенным.

Try:

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

Но Рух выполняет зачистку через обрезания в любом случае. Так что если вы посмотрите на выход X, Y и T на консоли, например: 0.9917 0.7694 – user7019377

+0

@ user7019377 Он прокладывает все возможные обрезания и обнаруживает, что один из них имеет идеальное разделение, поэтому вы получаете AUC = 1. – Calimo

+0

Пороги 0.9917 и 0.7694 в T, например, приведут к классификации этих примеров класса 2 как класс 1. Тем не менее Y говорит о совершенной TPR (специфичность), и X не говорит о FPR (отличная чувствительность). (Нажатый ввод слишком скоро случайно, не удается найти кнопку редактирования, так как я здесь новый.) – user7019377