почему функция matlab perfcurve () дает мне прямые линии, а не нормальную кривую, как ожидалось?

Я пытаюсь построить кривые рабочих характеристик приемника (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');

person Joy    schedule 19.11.2014    source источник


Ответы (2)


Вероятно, у вас слишком мало данных.

Кривая показывает, что в вашем наборе данных есть 13 отрицательных и 5 положительных примеров (в вашем наборе тестов?)

Более того, все, кроме 4, имеют точно одинаковую оценку (может быть, 0)? Или это твоя отсечка?

Учитывая такой небольшой размер выборки, я бы не согласился с гипотезой о том, что предложенный вами метод лучше, чем базовый уровень, но согласился бы с альтернативой - методы работают так же хорошо, как и другие: разница в 0,04 слишком велика. маленький для такого крошечного размера выборки, результаты практически идентичны. Любое отклонение в пределах области отсечения (диагональная часть) может быть намного больше, чем это 0,04 ... При другом прогоне, другом тестовом наборе результаты могут быть противоположными.

person Has QUIT--Anony-Mousse    schedule 19.11.2014

Форма вашей кривой - это просто результат высокой объясняющей способности вашей модели и ограниченного количества наблюдений (например, взгляните на пример здесь http://nl.mathworks.com/help/stats/perfcurve.html).

person Kostya    schedule 19.11.2014