Положительный класс Perfcurve

Я использую Matlab perfcurve [X, Y, T, AUC] = perfcurve (label, scores, posclass)

Меня смущает следующее. сначала простой пример, а потом я отвечу на свой вопрос

a) [X, Y, T, AUC] = perfcurve ([1 1 1 0 0 0], [. 9 .9 .9 .1 .1 .1], 1) дает AUC = 1

б) [X, Y, T, AUC] = perfcurve ([0 0 0 1 1 1], [. 9 .9 .9 .1 .1 .1], 1) дает AUC = 0

  1. когда я указываю положительный класс (laebl = 1), всегда ли он должен иметь более высокие баллы?
  2. Если я сделаю положительный класс (метка = 1) с более низкими оценками, как в b) выше, кривая ROC будет перевернута (зеркально противоположна нормальной кривой ROC)

Кривые, которые я генерирую с моими данными, выглядят так, как показано ниже. график 1 - распределение баллов. Классы показаны красным и синим цветом. Обратите внимание, что класс label = 1 (красный) имеет низкие оценки. красный -> метка = 1 синий-> метка = 0

Следующее изображение - это сгенерированная кривая ROC. По сути, это перевернутое изображение того, что я хочу увидеть. Я делаю что-то неправильно? или это поведение связано с тем, что класс label = 1 имеет низкие оценки?

введите описание изображения здесь введите описание изображения здесь


person mathopt    schedule 30.06.2015    source источник


Ответы (1)


Когда вы пишете 1 в третьем аргументе, вы определяете метку класса, которая должна приниматься как положительная (1), а затем perfcurve вычисляет fpr и tpr, глядя на вероятности / оценки, которые вы указываете во втором аргументе, относительно положительного метка класса, как вы ее определили (1). Оценка для каждых данных определяет, является ли это TP или FP (вы уже определили положительный класс), поэтому, если вы обмениваетесь оценками, как показано выше, без изменения метки класса положительного класса, каждый TP становится FP, поскольку теперь находится на противоположной стороне пороговых значений, используемых для расчета кривой ROC. Вот почему сюжет является зеркальным отражением того, чего вы ожидаете.

person J. A. Mercado    schedule 12.07.2015