Чи може AUC-ROC бути між 0-0,5?


16

Чи можуть значення AUC-ROC бути між 0-0,5? Чи модель коли-небудь виводить значення між 0 і 0,5?

Відповіді:


19

Ідеальний прогноктор дає бал AUC-ROC 1, а передбачувач, який робить випадкові здогадки, має бал AUC-ROC 0,5.

Якщо ви отримаєте оцінку 0, що означає, що класифікатор абсолютно неправильний, він прогнозує неправильний вибір у 100% часу. Якщо ви просто змінили прогнозування цього класифікатора на протилежний вибір, він міг би передбачити ідеально і мати бал AUC-ROC 1.

Тому на практиці, якщо ви отримуєте бал AUC-ROC від 0 до 0,5, ви можете помилитися в тому, як ви позначили цілі класифікатора, або у вас поганий алгоритм тренувань. Якщо ви отримаєте бал 0,2, це показує, що дані містять достатньо інформації, щоб отримати бал 0,8, але щось пішло не так.


Я думаю, що ця відповідь пропускає можливість того, що модель має надмірну кількість, наприклад, отримання AUC 0,8 щодо даних про навчання, але AUC 0,35 за даними про тримання.
Sycorax повідомляє, що повернеться до Моніки

1
@Sycorax: Хм, я бачу, як надмірна обробка може очевидно загнати AUC туди, де це є випадковий рівень (якщо ви настільки далекі від справжньої моделі, що ваші прогнози - це лише сміття), але як це піде (значно) нижче шансу ?
Рубен ван Берген

1
Ви будете мати AUC нижче 0,5, коли рейтинг за деяким набором буде ближче до відсталого, ніж правильного. Це нічим не відрізняється від перевитрати в будь-якому іншому контексті.
Sycorax повідомляє про відновлення Моніки

14

Вони можуть, якщо система, яку ви аналізуєте, працює нижче рівня шансів. Тривіально, ви можете легко сконструювати класифікатор з 0 AUC, маючи його завжди відповідати протилежно істині.

На практиці, звичайно, ви навчаєте свого класифікатора за деякими даними, тому значення, які є значно меншими за 0,5, зазвичай означають помилку в алгоритмі, мітках даних або виборі даних поїздів / тестів. Наприклад, якщо ви помилково переключили мітки класів у ваших даних поїздів, очікувана AUC складе 1 мінус "справжній" AUC (з урахуванням правильних позначок). AUC також може бути <0,5, якщо ви розділите свої дані на поїзд і тестові розділи таким чином, щоб шаблони, які підлягають класифікації, систематично відрізнялися. Це може статися (наприклад), якщо один клас був більш поширеним у поїзді проти тестового набору, або якщо шаблони в кожному наборі мали систематично різні перехоплення, які ви не виправляли.

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


1

Мені шкода, але ці відповіді небезпечно неправильні. Ні, ви не можете просто перевернути AUC після того, як побачите дані. Уявіть, що ви купуєте акції, і ви завжди купували неправильну, але ви сказали собі, то це нормально, бо якби ви купували протилежне тому, що передбачила ваша модель, ви б заробляли гроші.

Вся справа в тому, що є багато, часто не очевидних причин, як можна змістити свої результати і постійно отримувати нижче середнього показника. Якщо ви зараз перегортаєте свій AUC, ви можете подумати, що ви найкращий модельєр у світі, хоча жодного сигналу в даних не було.

Ось приклад моделювання. Зауважте, що предиктор - це лише випадкова величина, яка не має відношення до цілі. Також зауважте, що середня AUC становить приблизно 0,3.

library(MLmetrics)
aucs <- list()
for (sim in seq_len(100)){
  n <- 100
  df <- data.frame(x=rnorm(n),
               y=c(rep(0, n/2), rep(1, n/2)))

  predictions <- list()
  for(i in seq_len(n)){
    train <- df[-i,]
    test <- df[i,]

    glm_fit <- glm(y ~ x, family = 'binomial', data = train)
    predictions[[i]] <- predict(glm_fit, newdata = test, type = 'response')
  }
  predictions <- unlist(predictions)
  aucs[[sim]] <- MLmetrics::AUC(predictions, df$y)
}
aucs <- unlist(aucs)
plot(aucs); abline(h=mean(aucs), col='red')

Результати

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

Звичайно, немає можливості класифікатору дізнатися що-небудь із даних, оскільки дані є випадковими. Нижній шанс AUC є, тому що LOOCV створює упереджений, неврівноважений набір тренувань. Однак це не означає, що якщо ви не використовуєте LOOCV, ви в безпеці. Сенс цієї історії полягає в тому, що є багато способів, як результати можуть мати нижчу середню ефективність, навіть якщо в даних немає нічого, і тому ви не повинні гортати прогнози, якщо ви не знаєте, що ви робите. А оскільки у вас нижча середня продуктивність, ви не бачите, що ви робите :)

Ось декілька статей, які торкнулися цієї проблеми, але я впевнений, що й інші

Джамалабаді та ін. 2016 https://onlinelibrary.wiley.com/doi/full/10.1002/hbm.23140

Snoek et al 2019 https://www.ncbi.nlm.nih.gov/pubmed/30268846


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