Що таке "базова лінія" в кривій точності відкликання


15

Я намагаюся зрозуміти криву точності відкликання, я розумію, що таке точність і відкликання, але те, що я не розумію, це "базове" значення. Я читав це посилання https://classeval.wordpress.com/introduction/introduction-to-the-precision-recall-plot/

і я не розумію базову частину, як показано в "Кривій точності нагадування ідеального класифікатора", що це робить? і як це ми обчислимо? Це просто випадкова базова лінія, яку ми вибираємо? Наприклад, у мене є дані twitter з такими атрибутами, як retweet,status_countetc, і мітка класу - Favorited1, якщо вибрано, і 0, якщо не вибрано, і я застосовую наївні баїси на ній, і тепер я хочу провести криву точності нагадування, як я повинен встановити свою базову лінію в цьому випадку ?

Відповіді:


13

"Крива базової лінії" на графіку кривої PR - це горизонтальна лінія з висотою, що дорівнює кількості позитивних прикладів за загальною кількістю даних тренувань N , тобто. частка позитивних прикладів у наших даних ( PPN ).PN

Гаразд, чому це так? Давайте припустимо , що у нас є «нездоровий класифікатор» . З J повертає випадкову ймовірність р я до я -а вибірка , наприклад у я , щоб бути в класі А . Для зручності скажіть p iU [ 0 , 1 ] . Пряме значення цього випадкового призначення класу полягає в тому, що C J матиме (очікувану) точність, рівну частці позитивних прикладів у наших даних. Це лише природно; будь-яка абсолютно випадкова під вибірка наших даних матиме ECJCJpiiyiApiU[0,1]CJправильно класифіковані приклади. Це буде справедливо для будь-якого порогового значення ймовірностіцми могли б використовуватиякості кордону рішення для ймовірностей членів класущо повертаютьсяCJ. (qпозначає значення в[0,1],де значення ймовірності більше або рівніqкласифікуються в класА.) З іншого боку, ефективність відкликанняCJ(в очікуванні) дорівнюєq,якщоpiU[0,1]. При будь-якому заданому порозіE{PN}qCJq[0,1]qACJqpiU[0,1] ми виберемо (приблизно) ( 100 ( 1 - q ) ) % від загальної кількості даних, які згодом будуть містити (приблизно) ( 100 ( 1 - q ) ) % від загальної кількості екземплярів класу A у вибірці. Звідси горизонтальна лінія, яку ми згадували на початку! Для кожного значення виклику (значення x у графіку PR) відповідне значення точності (значення y у графі PR) дорівнює Pq(100(1q))%(100(1q))%Axy .PN

Швидке бічне Примітка: Поріг є НЕ звичайно дорівнює 1 мінус очікуваного відгук. Це відбувається у випадку згаданого вище C J лише через випадкове рівномірне розподіл результатів C J ; для іншого розподілу (наприклад, p iB ( 2 , 5 ) ) це приблизне співвідношення тотожності між q та згадуванням не дотримується; U [ 0 , 1 ] використовувався тому, що це найлегше зрозуміти та подумки уявити. Для іншого випадкового розподілу в [ 0qCJCJpiB(2,5)qU[0,1] PR-профіль C J не зміниться. Просто розміщення значень PR для заданихзначень q зміниться.[0,1]CJq

Тепер щодо досконалого класифікатора , мається на увазі класифікатор, який повертає ймовірність 1 до вибіркового екземпляра y i будучи класом A, якщо y i справді є класом A, і додатково C P повертає ймовірність 0, якщо y я не є членом класу . Це означає, що для будь-якого порогу q ми матимемо 100 % точність (тобто у графі-термінах ми отримуємо лінію, що починається з точності 100 % ). Єдиний момент у нас не виходить 100CP1yiAyiACP0yiAq100%100% точності при q = 0 . Для q = 0 точність падає на частку позитивних прикладів у наших даних ( P100%q=0q=0 )як (душевнохворих?) Класифікувати навіть точки з0ймовірністю того класуАяк в класіА. PRграфікCPмає тільки два можливих значення для її точності,1іРPN0AACP1 .PN

ОК та деякий код R, щоб побачити це з перших рук із прикладом, коли позитивні значення відповідають нашої вибірки. Зверніть увагу , що ми робимо «м'яке» привласнення класу категорії в тому сенсі , що значення ймовірності , пов'язане з кожною точкою квантіфіцірует для нашої впевненості в тому , що ця точці належить класу А .40%A

  rm(list= ls())
  library(PRROC)
  N = 40000
  set.seed(444)
  propOfPos = 0.40
  trueLabels = rbinom(N,1,propOfPos)
  randomProbsB = rbeta(n = N, 2, 5) 
  randomProbsU = runif(n = N)  

  # Junk classifier with beta distribution random results
  pr1B <- pr.curve(scores.class0 = randomProbsB[trueLabels == 1], 
                   scores.class1 = randomProbsB[trueLabels == 0], curve = TRUE) 
  # Junk classifier with uniformly distribution random results
  pr1U <- pr.curve(scores.class0 = randomProbsU[trueLabels == 1], 
                   scores.class1 = randomProbsU[trueLabels == 0], curve = TRUE) 
  # Perfect classifier with prob. 1 for positives and prob. 0 for negatives.
  pr2 <- pr.curve(scores.class0 = rep(1, times= N*propOfPos), 
                  scores.class1 = rep(0, times = N*(1-propOfPos)), curve = TRUE)

  par(mfrow=c(1,3))
  plot(pr1U, main ='"Junk" classifier (Unif(0,1))', auc.main= FALSE, 
       legend=FALSE, col='red', panel.first= grid(), cex.main = 1.5);
  pcord = pr1U$curve[ which.min( abs(pr1U$curve[,3]- 0.50)),c(1,2)];
  points( pcord[1], pcord[2], col='black', cex= 2, pch = 1)
  pcord = pr1U$curve[ which.min( abs(pr1U$curve[,3]- 0.20)),c(1,2)]; 
  points( pcord[1], pcord[2], col='black', cex= 2, pch = 17)
  plot(pr1B, main ='"Junk" classifier (Beta(2,5))', auc.main= FALSE,
       legend=FALSE, col='red', panel.first= grid(), cex.main = 1.5);
  pcord = pr1B$curve[ which.min( abs(pr1B$curve[,3]- 0.50)),c(1,2)]; 
  points( pcord[1], pcord[2], col='black', cex= 2, pch = 1)
  pcord = pr1B$curve[ which.min( abs(pr1B$curve[,3]- 0.20)),c(1,2)]; 
  points( pcord[1], pcord[2], col='black', cex= 2, pch = 17)
  plot(pr2, main = '"Perfect" classifier', auc.main= FALSE, 
       legend=FALSE, col='red', panel.first= grid(), cex.main = 1.5);  

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

де чорні кола та трикутники позначають та q = 0,20 відповідно на перших двох графіках. Ми відразу бачимо, що «мотлох» класифікатори швидко переходять до точності, рівній Pq=0.50q=0.20PN10.401

0

Для запису, в резюме вже є дуже хороша відповідь щодо корисності кривих PR: тут , тут і тут . Просто уважне читання їх повинно дати хороше загальне розуміння кривих PR.


1
Приєднався до цієї спільноти просто для того, щоб я зміг її підтримати. Це чудове пояснення концепції базової лінії в кривих точності виклику. Як біоінформатик я вважав це надзвичайно корисним.
jimh

1
@jimh: Дякую, це дуже приємно почути. Я радий, що повідомлення було корисним.
usεr11852

Я знаю, що це не коментар, який приносить корисну інформацію, але я хотів би подякувати тобі за ваше ретельне та відкритне пояснення.
Ric S

0

Чудова відповідь вище. Ось мій інтуїтивний спосіб її думати. Уявіть, у вас куля червоних куль = позитивна і жовта = негативна, і ви кидаєте їх випадковим чином у відро = позитивна частка. Тоді якщо у вас однакова кількість червоних та жовтих кульок, коли ви обчислюєте PREC = tp / tp + fp = 100/100 + 100 з відра червоний (позитивний) = жовтий (негативний), отже, PREC = 0,5. Однак, якби у мене було 1000 червоних кульок і 100 жовтих кульок, то у відрі я б випадково очікував PREC = tp / tp + fp = 1000/1000 + 100 = 0,91, тому що це базовий рівень шансу в позитивній фракції, яка також є RP / RP + RN, де RP = реальна позитивна і RN = реальна негативна.

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