У меня есть тестовый набор из 100 случаев и два классификатора.
Я генерировал прогнозы и вычислял ROC AUC, чувствительность и специфичность для обоих классификаторов.
Вопрос 1: Как я могу вычислить значение p, чтобы проверить, является ли одно значительно лучше другого по всем показателям (ROC AUC, чувствительность, специфичность)?
Теперь для одного и того же набора тестов из 100 случаев у меня есть разные и независимые назначения функций для каждого случая. Это потому, что мои функции фиксированы, но субъективны и представлены несколькими (5) субъектами.
Итак, я снова оценил свои два классификатора для 5 «версий» моего тестового набора и получил 5 ROC AUC, 5 чувствительности и 5 особенностей для обоих классификаторов. Затем я вычислил среднее значение каждого показателя эффективности для 5 субъектов (среднее значение ROC AUC, среднее значение чувствительности и среднее значение специфичности) для обоих классификаторов.
Вопрос 2: Как я могу вычислить значение p, чтобы проверить, является ли одно значительно лучше другого по средним показателям (среднее значение ROC AUC, средняя чувствительность, средняя специфичность)?
Ответы с примерами кода Python (предпочтительно) или MatLab приветствуются.
Ответы:
Войтек Дж. Кржановски и Дэвид Дж. Кривые ROC для непрерывных данных (2009) - отличный справочник для всего, что связано с кривыми ROC. Он собирает воедино ряд результатов, что является разочаровывающей широкой литературной базой, которая часто использует различную терминологию для обсуждения одной и той же темы.
Кроме того, эта книга предлагает комментарии и сравнения альтернативных методов, которые были получены для оценки одних и тех же величин, и указывает на то, что некоторые методы делают предположения, которые могут быть несостоятельными в определенных контекстах. Это один из таких контекстов; в других ответах сообщается о методе Hanley & McNeil, который предполагает бинормальную модель для распределения баллов, что может быть неуместно в случаях, когда распределение баллов по классам не является (близко к) нормальным. Предположение о нормально распределенных оценках кажется особенно неуместным в современных условиях машинного обучения , типичные общие модели, такие как xgboost, имеют тенденцию давать оценки с распределением «ванной» для задач классификации (то есть распределений с высокой плотностью в крайних значениях около 0 и 1). ).
Вопрос 1 - AUC
В разделе 6.3 обсуждается сравнение ROC AUC для двух кривых ROC (стр. 113-114). В частности, я понимаю, что эти две модели будут коррелированы, поэтому информация о том , как вычислитьr имеет решающее значение здесь; в противном случае ваша тестовая статистика будет смещена, поскольку она не учитывает вклад корреляции.
Поскольку другие ответы дают выражения Хенли и Макнеила для оценщиков дисперсии AUC, здесь я воспроизведу оценку Делонга из p. 68:
Это упрощенное общее описание того, как работает проверка гипотез:
Проверка, по вашим словам, «является ли один классификатор значительно лучше другого» может быть перефразирована как проверка нулевой гипотезы о том, что две модели имеют статистически равные значения AUC, против альтернативной гипотезы о том, что статистика неравна.
Это двусторонний тест.
Мы отвергаем нулевую гипотезу, если тестовая статистика находится в критической области эталонного распределения, которое в этом случае является стандартным нормальным распределением.
Вопрос 1 - Чувствительность и специфичность
Основным камнем преткновения является разработка соответствующего теста, учитывая, что две пропорции образца будут коррелированы (поскольку вы применили две модели к одним и тем же данным теста). Об этом говорится на с. 111.
вопрос 2
Кажется, что достаточно объединить результаты путем усреднения значений прогнозирования для каждого респондента, так что для каждой модели у вас есть 1 вектор из 100 усредненных прогнозируемых значений. Затем вычислите ROC AUC, статистику чувствительности и специфичности как обычно, как если бы исходные модели не существовали. Это отражает стратегию моделирования, которая рассматривает каждую из 5 моделей респондентов как один из «комитетов» моделей, что-то вроде ансамбля.
источник
Позвольте мне кратко ответить, потому что это руководство объясняет намного больше и лучше .
Для сравнения двух AUC вам нужно вычислить SE из них, используя:
Оттуда вы можете вычислить p-значение, используя плотность вероятности стандартного нормального распределения. Или просто используйте этот калькулятор.
Это, надеюсь, ответит на вопрос 1 . - по крайней мере, часть, сравнивающая AUC. Sens / Spec уже каким-то образом покрывается ROC / AUC. В противном случае ответ, я думаю, лежит в вопросе 2.
Что касается вопроса 2 , центральная предельная теорема говорит нам, что ваша сводная статистика будет следовать нормальному распределению. Следовательно, я думаю, что будет достаточно простого t-критерия (5 мер одного классификатора против 5 мер второго классификатора, где мерами могут быть AUC, sens, spec)
источник
На вопрос 1 @Sycorax предоставил исчерпывающий ответ.
На вопрос 2, насколько мне известно, усреднение прогнозов по предметам является неправильным. Я решил использовать начальную загрузку для вычисления p-значений и сравнения моделей.
В этом случае процедура выглядит следующим образом:
Эта процедура выполняет односторонний тест и предполагает, что M1 означает производительность> M2 означает производительность.
Реализацию начальной загрузки Python для вычисления значений p, сравнивающих несколько читателей, можно найти в этом репозитории GitHub: https://github.com/mateuszbuda/ml-stat-util
источник