значения данных в кривой ROC с использованием пакета PRROC

Я пытаюсь построить кривую ROC идентификатора, используемого для определения положительных инцидентов на фоне набора данных. Идентификатор - это список оценок вероятности с некоторым перекрытием между двумя группами.

FG          BG
0.02        0.10
0.03        0.25 
0.02        0.12
0.04        0.16
0.05        0.45
0.12        0.31
0.13        0.20

(где FG = положительный, а BG = отрицательный.)

Я строю кривую ROC, используя PRROC в R, чтобы оценить, насколько хорошо идентификатор классифицирует данные в правильную группу. Хотя существует четкое различие между значениями классификатора, полученными между положительными и отрицательными наборами данных, но мой текущий график ROC в R показывает низкое значение AUC. Мои оценки вероятности для положительных данных ниже, чем для фона, поэтому, если я переключаю классификацию и использую фон в качестве точек переднего плана, я получаю кривую AUC с высокими баллами, и я не на 100% понимаю, почему это так, какой график лучше всего использовать или был ли дополнительный шаг, который я пропустил перед анализом моих данных.

roc ‹- roc.curve (scores.class0 = FG, scores.class1 = BG, curve = T)

ROC curve

Area under curve:
0.07143

roc2 ‹- roc.curve (scores.class0 = BG, scores.class1 = FG, curve = T)

ROC curve

Area under curve:
0.92857

person af101    schedule 24.11.2017    source источник
comment
Вы спрашиваете о РПЦ или PR? В настоящее время я понятия не имею, какой вопрос вы задаете.   -  person Calimo    schedule 25.11.2017
comment
Мой вопрос о ROC, я отредактировал выше для ясности.   -  person af101    schedule 26.11.2017


Ответы (1)


Как вы действительно заметили, большинство инструментов анализа ROC предполагают, что оценки в вашем положительном классе выше, чем в отрицательном классе. Более формально, экземпляр классифицируется как «положительный», если X> T, где T - порог принятия решения, и отрицательный в противном случае.

Для этого нет никаких фундаментальных причин. Совершенно верно иметь такое решение, как X ‹T, однако в большинстве программ ROC такой возможности нет.

Использование вашего первого варианта, приводящего к AUC = 0,07143, будет означать, что ваш классификатор работает хуже, чем случайный. Это не так.

Как вы заметили, замена меток классов дает правильное значение кривой. Это возможно, потому что кривые ROC нечувствительны к распределению классов - и классы могут быть возвращены без проблем. Однако я бы лично не рекомендовал этот вариант. Я вижу два случая, когда это может ввести в заблуждение:

  • для кого-то еще, смотрящего на код, или для себя через несколько месяцев; определение неправильных классов и их "исправление"
  • или если вы хотите применить тот же код к кривым PR, которые чувствительны к распределению классов и где вы не можете поменять местами классы.

Альтернативным и предпочтительным подходом было бы инвертирование ваших оценок для этого анализа, чтобы положительный класс имел более высокие баллы:

roc <- roc.curve(scores.class0 = -FG, scores.class1 = -BG, curve = T)
person Calimo    schedule 27.11.2017