Рассчитать точность с помощью пакета ROCR в R

Я пытаюсь рассчитать точность с помощью пакета ROCR в R, но результат отличается от того, что я ожидал:

Предположим, у меня есть прогноз модели (p) и метка (l) следующим образом:

p <- c(0.61, 0.36, 0.43, 0.14, 0.38, 0.24, 0.97, 0.89, 0.78, 0.86)
l <- c(1,     1,    1,    0,    0,     1,    1,    1,    0,     1)

И я рассчитываю точность этого прогноза, используя следующие команды:

library(ROCR)
pred <- prediction(p, l)
perf <- performance(pred, "acc")
max([email protected][[1]])

но получается 0,8, что по формуле точности (TP+TN)/(TN+TP+FN+FP) должно быть 0,6 не знаю почему?


r roc
person Soroosh    schedule 14.12.2013    source источник


Ответы (1)


Когда вы используете max([email protected][[1]]), он вычисляет максимальную точность при любой возможной отсечке для прогнозирования положительного результата.

В вашем случае оптимальный порог равен p=0.2, при котором вы делаете 2 ошибки (в наблюдениях с предсказанными вероятностями 0,38 и 0,78), что дает максимальную точность 0,8.

Вы можете получить доступ к отсечкам для вашего перфорированного объекта, используя [email protected][[1]].

person josliber♦    schedule 14.12.2013
comment
Спасибо за ваш ответ. Как можно получить точность для отсечки 0.5? Это max([email protected][[0.5]])? Кроме того, вы знаете, почему нам нужно max() для их получения? - person Zhubarb; 27.08.2014
comment
@Zhubarb с РПЦЗ я бы использовал [email protected][[1]][max(which([email protected][[1]] >= 0.5))]. - person josliber♦; 27.08.2014
comment
Отлично, так что в этом конкретном примере [email protected]= Inf 0.97 0.89 0.86 0.78 0.61 0.43 0.38 0.36 0.24 0.14 и [email protected]=0.3 0.4 0.5 0.6 0.5 0.6 0.7 0.6 0.7 0.8 0.7. Поэтому ваш код возвращает acc вместо cut_off=0.61 (что является наименьшей отсечкой, превышающей 0,5), это правильно? - person Zhubarb; 27.08.2014
comment
@Zhubarb это точность для всех отсечек в диапазоне 0,43-0,61. - person josliber♦; 28.08.2014
comment
Я вижу, это имеет больше смысла на самом деле. Я предположил, что отсечки были несколько случайными. Большое спасибо! - person Zhubarb; 28.08.2014