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


16

Я побудував криву ROC для діагностичної системи. Тоді площа під кривою була непараметрично оцінена як AUC = 0,89. Коли я спробував обчислити точність при встановленні оптимального порогового значення (точка, найближча до точки (0, 1)), я отримав точність діагностичної системи 0,8, що менше AUC! Коли я перевірив точність на іншому порозі, який є далеко від оптимального порогу, я отримав точність, рівну 0,92. Чи можливо отримати точність діагностичної системи за найкращого встановлення порогового значення, ніж точність на іншому порозі, а також нижче, ніж площа під кривою? Дивіться додане зображення будь-ласка.

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


1
Скажіть, будь ласка, скільки зразків було у вашому аналізі? Б'юсь об заклад, що сильно незбалансований. Крім того, AUC і точність взагалі не перекладаються так (коли ви говорите, що точність нижча, ніж AUC).
Firebug

1
269469 - негативні, а 37731 - позитивні; це може бути тут проблемою відповідно до наведених нижче відповідей (дисбаланс класів).
Алі Султан

майте на увазі, що проблема не є дисбалансом класу як такою, це вибір міри оцінювання. Загалом, є більш розумним у цьому сценарії, або ви могли б реалізувати збалансовану точність. АUС
Firebug

І останнє, якщо ви відчуваєте, що відповідь відповіла на ваше запитання, ви можете розглянути можливість прийняття відповіді (зелена галочка). Це не є обов'язковим, але допомагає людині, яка відповіла, а також допомагає організації сайту (питання вважається невирішеним, поки ви цього не зробите), і, можливо, людям, які поставлять те саме питання в майбутньому.
Firebug

Відповіді:


8

Це дійсно можливо. Головне пам’ятати, що на точність сильно впливає дисбаланс класів. Наприклад, у вашому випадку у вас більше негативних зразків, ніж позитивних зразків, оскільки коли FPR ( ) близький до 0, а TPR (=TP=ЖПЖП+ТN ) - 0,5, ваша точність (=TP+TNТПТП+ЖN ) ще дуже високий.=ТП+ТNТП+ЖN+ЖП+ТN

Інакше кажучи, оскільки у вас є набагато більше негативних зразків, якщо класифікатор весь час прогнозує 0, він все одно отримає високу точність з FPR і TPR, близькими до 0.

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

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


10

ЖПRТПRАСС

ТПR=Справжній позитивПозитивні випадки

ЖПR=Хибно позитивнийНегативні випадки

АСС=ТПRПозитивні випадки+(1-ЖПR)Негативні випадкиПозитивні випадки+Негативні випадки

АССТПRЖПR

АСС=ТПR+1-ЖПR2

N-N+

АСС(N-N+)1-ЖПR
АССЖПR

Дивіться цей приклад, мінуси перевищують позитивні 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)

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


АUС

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

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

ТПR=1-ЖПR

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


АUС

І найголовніше: Чому AUC вище для класифікатора, який є менш точним, ніж для більш точного?

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.