Я пытаюсь построить кривые рабочих характеристик приемника (ROC), чтобы оценить различающую способность моего классификатора правильно классифицировать больных и здоровых субъектов.
Я понимаю, что чем ближе кривая следует за левой границей, а затем за верхней границей пространства ROC, тем точнее тест. Мои эксперименты дали мне вполне желаемое значение площади под кривой (auc), то есть 0,86458. Однако кривая ROC (в которую я включил точки отсечения для отслеживания) кажется довольно странной, поскольку она дала мне прямые линии, как показано ниже:
... и не та кривая, которую я ожидал, и, как я обычно вижу по любым подобным ссылкам:
Связано ли это с количеством использованных наблюдений? (в данном случае у меня всего 50 образцов). Или это нормально, если значение auc высокое и «кривая» проходит выше 45-градусной диагонали пространства ROC? Буду рад, если кто-нибудь поделится своими мыслями по этому поводу. Спасибо!
Кстати, в Matlab я использовал функцию perfcurve ():
% ROC comparison between the proposed approach and the baseline
[X1,Y1,T1,auc1,OPTROCPT1,SUBY5,SUBYNAMES1] = perfcurve(testLabel,predlabel_prop,1);
[X2,Y2,T2,auc2,OPTROCPT2,SUBY2,SUBYNAMES2] = perfcurve(testLabel,predLabel_base,1);
figure;
plot(X1,Y1,'-r*',X2,Y2,'--ko');
legend('proposed approach','baseline','Location','east');
xlabel('False positive rate'); ylabel('True positive rate')
title('ROC comparison of the proposed approach and the baseline')
text(0.6,0.3,{'* - proposed method',strcat('Area Under Curve = ',...
num2str(auc1))},'EdgeColor','r');
text(0.6,0.15,{'o - baseline',strcat('Area Under Curve = ',num2str(auc2))},'EdgeColor','k');