Точность против площади под кривой ROC

16

Я построил кривую ROC для диагностической системы. Площадь под кривой была непараметрически оценена как AUC = 0,89. Когда я попытался вычислить точность при оптимальной настройке порога (точка, ближайшая к точке (0, 1)), я получил точность диагностической системы равной 0,8, что меньше, чем AUC! Когда я проверил точность при другой настройке порога, которая далека от оптимального порога, я получил точность, равную 0,92. Можно ли получить точность диагностической системы при наилучшей настройке порога ниже, чем точность на другом пороге, а также ниже, чем площадь под кривой? Смотрите прикрепленную картинку, пожалуйста.

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

Али Султан
источник
1
Не могли бы вы указать, сколько образцов было в вашем анализе? Могу поспорить, что это было сильно несбалансированным. Кроме того, AUC и точность не переводятся так (если вы говорите, точность ниже, чем AUC), вообще.
Firebug
1
269469 - отрицательные и 37731 - положительные; это может быть проблемой здесь согласно ответам ниже (дисбаланс класса).
Али Султан
Имейте в виду, что проблема заключается не в дисбалансе класса как таковом, а в выборе меры оценки. В общем, является более разумным в этом сценарии, или вы могли бы реализовать сбалансированную точность. AUС
Firebug
И последнее: если вы чувствуете, что ответ ответил на ваш вопрос, вы можете подумать о «принятии» ответа (зеленая галочка). Это не обязательно, но помогает человеку, который ответил, а также помогает организации сайта (вопрос считается без ответа, пока вы не сделаете это), и, возможно, людям, которые зададут тот же вопрос в будущем.
Firebug

Ответы:

8

Это действительно возможно. Ключ должен помнить, что на точность сильно влияет дисбаланс классов. Например, в вашем случае у вас больше отрицательных образцов, чем положительных образцов, так как, когда FPR ( ) близко к 0, а TPR (=TP=FPFP+TN ) = 0,5, ваша точность (=TP+TNTPTP+FN ) все еще очень высока.=TP+TNTP+FN+FP+TN

Иными словами, поскольку у вас есть гораздо больше отрицательных выборок, если классификатор все время прогнозирует 0, он все равно получит высокую точность при значениях FPR и TPR, близких к 0.

То, что вы называете настройкой оптимального порога (точка, ближайшая к точке (0, 1)), является лишь одним из многих определений оптимального порога: оно не обязательно оптимизирует точность.

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

Франк Дернонкур
источник
10

FPRTPRACC

TPR=True positivePositive cases

FPR=False positiveNegative cases

ACC=TPRPositive cases+(1FPR)Negative casesPositive cases+Negative cases

ACCTPRFPR

ACC=TPR+1FPR2

NN+

ACC(NN+)1FPр
ACCFPR

Посмотрите этот пример, число негативов превышает число позитивов 1000: 1.

data = c(rnorm(10L), rnorm(10000L)+1)
lab = c(rep(1, 10L), rep(-1, 10000L))
plot(data, lab, col = lab + 3)
tresh = c(-10, data[lab == 1], 10)
do.call(function(x) abline(v = x, col = "gray"), list(tresh))

pred = lapply(tresh, function (x) ifelse(data <= x, 1, -1))
res = data.frame(
  acc = sapply(pred, function(x) sum(x == lab)/length(lab)),
  tpr = sapply(pred, function(x) sum(lab == x & x == 1)/sum(lab == 1)),
  fpr = sapply(pred, function(x) sum(lab != x & x == 1)/sum(lab != 1))
)

res[order(res$acc),]

#> res[order(res$acc),]
#           acc tpr    fpr
#12 0.000999001 1.0 1.0000
#11 0.189110889 1.0 0.8117
#9  0.500099900 0.9 0.5003
#2  0.757742258 0.8 0.2423
#5  0.763136863 0.7 0.2368
#4  0.792007992 0.6 0.2078
#10 0.807292707 0.5 0.1924
#3  0.884215784 0.4 0.1153
#7  0.890709291 0.3 0.1087
#6  0.903096903 0.2 0.0962
#8  0.971428571 0.1 0.0277
#1  0.999000999 0.0 0.0000

Смотрите, когда fpr0 acc- это максимум.

А вот и РПЦ, с точностью аннотированной.

plot(sort(res$fpr), sort(res$tpr), type = "S", ylab = "TPR", xlab = "FPR")
text(sort(res$fpr), sort(res$tpr), pos = 4L, lab = round(res$acc[order(res$fpr)], 3L))
abline(a = 0, b = 1)
abline(a = 1, b = -1)

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


AUC

1-sum(res$fpr[-12]*0.1)
#[1] 0.74608

Суть в том, что вы можете оптимизировать точность таким образом, чтобы получить поддельную модель ( tpr= 0 в моем примере). Это связано с тем, что точность не является хорошим показателем, дихотомия результата должна быть оставлена ​​на усмотрение лица, принимающего решение.

Оптимальный порог называется TPR=1FPR

Когда у вас несбалансированные классы, оптимизация точности может быть тривиальной (например, предсказать каждого как класс большинства).


AUC

И самое главное: почему AUC выше для классификатора, который менее точен, чем для более точного классификатора?

поджигатель
источник