Вы когда-нибудь задумывались, как продемонстрировать, что производительность набора тестов одной модели машинного обучения значительно отличается от производительности набора тестов альтернативной модели? В этом посте будет описано, как использовать тест ДеЛонга для получения значения p для определения того, имеет ли одна модель AUC, существенно отличающуюся от AUC другой модели, где AUC относится к области под рабочей характеристикой приемника. Этот пост включает пример, рассчитанный вручную, чтобы проиллюстрировать все этапы теста Делонга для небольшого набора данных. Он также включает в себя пример R-реализации теста Делонга для обеспечения эффективных вычислений на больших наборах данных.

Пример использования теста ДеЛонга: модель A предсказывает риск сердечных заболеваний с AUC 0,92, а модель B предсказывает риск сердечных заболеваний с AUC 0,87, и мы используем тест ДеЛонга, чтобы продемонстрировать, что модель A имеет AUC, значительно отличающуюся от модели B с p ‹0,05.

Ссылки

Элизабет Рэй ДеЛонг - статистик, профессор Университета Дьюка. В 1988 году она опубликовала тест для определения того, статистически значимо ли различаются AUC двух моделей. Этот тест получил название тест Делонга.

Основные ссылки на этот пост:

Для удобства в обеих статьях используются одинаковые обозначения, которые мы и будем использовать в этом посте.

Определения чувствительности и специфичности

Чтобы понять, как работает тест Делонга, нам нужно начать с некоторых обозначений. Мы привыкнем к этому обозначению, используя его для определения чувствительности, специфичности и AUC.

Рассмотрим ситуацию, в которой мы построили модель, чтобы предсказать, есть ли у человека заболевание. Мы делаем прогнозы на основе набора тестовых данных, включающего всего N пациентов, из которых m действительно больны, а n действительно здоровы. Наша модель дает прогнозируемые вероятности X для m больных пациентов и прогнозируемые вероятности Y для n здоровых пациентов:

Используя эти обозначения, мы можем записать определения чувствительности и специфичности:

Чувствительность также известна как отзыв или истинно положительный результат. Это доля истинно положительных (больных), которые модель правильно определяет как положительные (больные). Мы определяем чувствительность при определенном пороге принятия решения z следующим образом:

Специфичность также известна как истинная отрицательная ставка. Это доля истинно отрицательных (здоровых людей), которые правильно определены моделью как отрицательные (здоровые). Мы определяем специфичность на определенном пороге принятия решения z следующим образом:

Это означает, что, изменяя порог принятия решения z, мы будем изменять чувствительность и специфичность.

Определение AUC и расчет эмпирической AUC

Рабочая характеристика приемника (ROC) предоставляет сводную информацию о чувствительности и специфичности для различных пороговых значений z. Мы строим кривую ROC, варьируя пороговое значение z и строя график зависимости чувствительности от (1 - специфичность) для каждого значения z.

Область под кривой ROC, или AUC, представляет собой единое число для суммирования производительности модели по всем различным порогам принятия решений.

В статье ДеЛонг и др. описать метод, в котором эмпирическая AUC вычисляется путем суммирования площади трапеций, которые образуются ниже соединенных точек, составляющих кривую ROC (ref).

Для контекста, эмпирический подход Делонга к AUC отличается от биномиального подхода AUC. Биномиальная ROC-кривая строится на основе предположения, что каждая оценка диагностического теста, соответствующая положительному состоянию, и оценка, соответствующая отрицательному состоянию, может быть представлена ​​нормальным распределением (ref).

Эмпирический подход AUC более популярен, чем подход биномиального AUC, потому что эмпирический AUC не полагается на строгие предположения о нормальности, которых требует биномиальный AUC.

Мы можем вычислить эмпирическую AUC (представленную как «тета-шляпа») с помощью правила трапеций следующим образом:

Это определение AUC имеет интуитивный смысл:

  • Когда Y ‹X, это означает, что прогнозируемая вероятность заболевания для здорового человека меньше, чем прогнозируемая вероятность заболевания для больного человека, и это хорошо: мы хотим, чтобы у действительно здоровых людей прогнозируемый риск заболевания был ниже, чем у реально больных. Итак, мы вознаграждаем модель за хороший прогноз и вносим вклад в AUC модели + 1 / мин.
  • Когда Y = X, это означает, что прогнозируемая вероятность заболевания здорового человека равна прогнозируемой вероятности заболевания больного человека, что не удивительно, но и не ужасно, поэтому мы вносим вклад в AUC модели в ( +1/2) / мин.
  • Когда Y> X, это означает, что прогнозируемая вероятность заболевания для здорового человека больше, чем прогнозируемая вероятность заболевания для больного человека, что плохо: модель считала, что действительно здоровый человек имеет более высокий риск заболевания, чем действительно больной. Мы не добавляем здесь ничего к AUC модели (+0).

Функция psi (X, Y) также известна как функция Хевисайда (с соглашением о половине максимума).

Дополнительные сведения о чувствительности, специфичности и построении кривой ROC см. В этом посте.

Связь между AUC и статистикой Манна-Уитни

В предыдущем посте я описал AUC следующим образом:

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

Как оказалось, это определение верно, потому что эмпирическая AUC равна U-статистике Манна-Уитни. Цитируя Делонга и др.,

При вычислении по правилу трапеций площадь, попадающая под точки, составляющие эмпирическую кривую ROC, оказалась равной U-статистике Манна-Уитни для сравнения распределений значений из двух выборок. […] Статистика Манна-Уитни оценивает вероятность, тета, что случайно выбранное наблюдение из популяции, представленной C2 [здоровые люди], будет меньше или равно случайно выбранному наблюдению из популяции, представленной C1 [больные люди ].

Если сформулировать то же самое и по-другому, Википедия описывает U-тест Манна-Уитни как:

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

Таким образом, чтобы резюмировать,

Обратите внимание, что:

Тест Делонга для сравнения AUC двух моделей

Пример настройки

Теперь, когда мы закончили определение эмпирической AUC и всех обозначений, мы можем перейти к описанию того, как тест Делонга определяет, имеет ли одна модель статистически значимо отличную AUC от альтернативной модели.

Вот игрушечный тестовый набор из пяти пациентов с прогнозами от двух моделей. Мы будем использовать этот игрушечный тестовый набор для рабочего примера:

Набор данных включает двух действительно здоровых пациентов и трех действительно больных пациентов, состояние их здоровья которых было определено каким-то недвусмысленным образом, так что мы можем считать это «основной истиной». Столбец для модели A показывает прогнозируемые вероятности заболевания для всех пациентов в соответствии с моделью A. В соответствии с обозначениями, введенными ранее, эти прогнозируемые вероятности представлены в виде Y для здоровых пациентов и X для больных. Столбец для модели B показывает прогнозируемые вероятности заболевания для всех пациентов в соответствии с моделью B.

Обратите внимание, что Модель A - это классификатор с идеальной AUC (которая будет явно продемонстрирована позже), потому что все здоровые пациенты имеют более низкую вероятность заболевания, чем все больные пациенты. Модель B не имеет идеального AUC.

Следуя обозначениям в статьях, общее количество рассматриваемых моделей составляет 1 ‹= r‹ = k, где k = 2 (потому что здесь мы рассматриваем только 2 модели). N = 2 (количество здоровых пациентов) и m = 3 (количество заболевших.)

Цель теста Делонга

Мы хотим знать, что лучше - модель A или модель B с точки зрения AUC, где тета-хет (A) - это AUC модели A, а тета-хет (B) - это AUC модели B. Чтобы ответить на этот вопрос, мы рассчитает показатель z:

Цитируя Sun et al.,

При нулевой гипотезе z можно хорошо аппроксимировать стандартным нормальным распределением. Следовательно, если значение z слишком сильно отклоняется от нуля, например, z ›1,96, разумно считать, что [theta (A)› theta (B) ] с уровнем значимости p ‹0,05.

Другими словами, если z слишком сильно отклоняется от нуля, мы можем сделать вывод, что модель A имеет статистически отличную AUC от модели B с p <0,05.

Чтобы найти показатель z, нам нужно будет вычислить эмпирические AUC, дисперсию V и ковариацию C. В следующих разделах будет показано, как рассчитать эти количества.

(Примечание: использование «z» здесь в «z-оценке» совершенно не связано с использованием «z» в предыдущем обсуждении «z как порога принятия решения».)

Расчет эмпирической AUC для модели A и модели B

Следуя приведенному ранее определению эмпирической AUC, мы рассчитываем эмпирическую AUC для модели A:

Точно так же мы рассчитываем эмпирическую AUC для модели B:

Обратите внимание, что модель A имеет AUC, равную 1,0, потому что она точно оценивает всех больных пациентов как имеющих более высокую вероятность заболевания, чем всех здоровых пациентов. Модель B имеет AUC 2/3, потому что она не дает точного ранжирования всех пациентов.

Структурные компоненты V10 и V01

Следующим шагом, необходимым для теста Делонга, является расчет V10 и V01, которые Sun и др. Называют «структурными компонентами».

V10 и V01 помогут нам найти дисперсию и ковариацию, необходимые для расчета показателя z. V10 и V01 определяются следующим образом:

Напомним, что «r» представляет, какую модель мы рассматриваем, поэтому у нас есть разные расчеты конструктивных компонентов для r = A (для модели A) и r = B (для модели B).

Для нашего небольшого примера набора данных расчеты структурных компонентов для моделей A и B следующие:

Матрицы S10 и S01

Затем мы будем использовать структурные компоненты V10 и V01 в сочетании с нашими эмпирическими AUC, чтобы вычислить матрицы S10 и S01, которые определены следующим образом:

Матрицы S10 и S01 представляют собой матрицы размером k x k, где k - общее количество моделей, которые мы рассматриваем. Поскольку мы рассматриваем только две модели (модель A и модель B), каждая матрица будет 2 x 2.

Вот вычисления для записей в матрице S10:

Оказывается, для матрицы S10 все элементы равны нулю, кроме записи (B, B).

Вот расчеты для записей в матрице S01:

Матрица S01 заканчивается всеми нулевыми элементами для этого конкретного примера.

Расчет дисперсии и ковариации

Теперь мы будем использовать S10 и S01, чтобы получить матрицу S, где матрица S содержит дисперсию и ковариацию, которые нам нужны, чтобы получить нашу оценку z для теста Делонга. Все, что нам нужно сделать, чтобы получить S, - это сумма S10 и S01, взвешенная на основе 1 / m = 3 (количество больных) и 1 / n = 2 (количество здоровых людей) соответственно:

Как видно из приведенного выше расчета, наша окончательная матрица S содержит дисперсию эмпирической AUC для модели A, дисперсию эмпирической AUC для модели B и ковариацию AUC для моделей A и B. Это ключевые величины. что нам нужно, чтобы получить нашу оценку z.

Расчет Z-балла

Чтобы вычислить показатель z, мы подставляем только что вычисленные значения эмпирических значений AUC, дисперсии и ковариации:

Использование показателя Z для получения значения P

Наш расчетный показатель z равен 1. Как мы получаем из этого p-значение?

Мы проводим двусторонний тест, потому что пытаемся утверждать, что AUC модели A отличается от (не равно) AUC модели B.

Мы можем использовать справочную таблицу для двусторонних значений P для статистики z. В таблице под десятыми долями (по вертикали) мы помещаем 1,0, а под сотыми (по горизонтали) мы локально 0,00, потому что наш Z-Score равен 1,00. Запись в таблице в этой позиции - 0,31731, что является нашим p-значением.

В качестве альтернативы, чтобы не искать в большой таблице чисел, мы можем использовать онлайн-калькулятор, подобный этому. Нам нужно выбрать двустороннюю гипотезу и ввести в нашу z оценку 1, которая дает p-значение 0,317311 (в соответствии с результатом, полученным нами из справочной таблицы).

Расчет теста Делонга в R

Ручные вычисления подходят для крошечных наборов данных о игрушках, но для любого набора реальных данных мы захотим использовать программное обеспечение для вычисления теста Делонга. Один из вариантов - использовать пакет pROC в R.

Используя пакет pROC, мы сначала создаем две кривые ROC для сравнения, используя функцию roc. Функция roc может быть вызвана для ответа (основная истина) и предсказателя (предсказанные вероятности) как roc (отклик, предсказатель).

Для наших примеров моделей A и B у нас есть:

  • ответ ‹-c (0,0,1,1,1)
  • модель ‹-c (0.1,0.2,0.6,0.7,0.8)
  • модельb ‹-c (0.3,0.6,0.2,0.7,0.9)
  • roca ‹- roc (ответ, модель)
  • rocb ‹-roc (ответ, модельb)

Теперь, когда мы построили наши кривые ROC, мы можем применить функцию pROC roc.test для сравнения AUC двух кривых ROC.

Выход:

Тест Делонга для двух коррелированных кривых ROC

данные: roca и rocb
Z = 1, p-value = 0,3173
альтернативная гипотеза: истинная разница в AUC не равна 0
примерные оценки:
AUC roc1 AUC roc2
1.0000000 0.6666667

Это соответствует результату, который мы получили вручную выше.

Еще один пример теста Делонга на языке R

Вот еще один пример теста Делонга на языке R, показывающий, как результат отличается при использовании разных истинных значений и предсказанных вероятностей:

ответ ‹-c (0,0,0,0,0,0,1,1,1,1,1,1,1)
modela‹ -c (0,1,0.2,0.05,0.3,0.1, 0.6,0.6,0.7,0.8,0.99,0.8,0.67,0.5)
modelb ‹-c (0.3,0.6,0.2,0.1,0.1,0.9,0.23,0.7,0.9,0.4,0.77,0.3,0.89 )
roca ‹- roc (ответ, модель)
rocb‹ -roc (ответ, модельb)

roc.test (roca, rocb, method = c («delong»))

Тест Делонга для двух коррелированных кривых ROC

данные: roca и rocb
Z = 1,672, p-значение = 0,09453
альтернативная гипотеза: истинная разница в AUC не равна 0
примерные оценки:
AUC roc1 AUC roc2
0,9642857 0,7380952

Резюме

  • Тест ДеЛонга можно использовать, чтобы показать, что AUC двух моделей статистически значимо различаются.
  • Кривая ROC суммирует чувствительность и (1 - специфичность) при различных порогах принятия решения. AUC - это площадь под кривой ROC.
  • Эмпирическая AUC рассчитывается с использованием правила трапеций на кривой ROC.
  • Тест ДеЛонга требует расчета эмпирических значений AUC, дисперсии AUC и ковариации AUC.
  • Реализация R в пакете pROC позволяет быстро рассчитать тест Делонга.

Об избранном изображении

На изображении изображен египетский стервятник. Оригинальное фото стервятника было сделано Карлосом Дельгадо CC-BY-SA и доступно в Википедии здесь. Фотография, показанная в этом посте, была изменена и теперь включает графики AUC и уравнения, относящиеся к тесту Делонга. Измененная фотография распространяется по той же лицензии, что и исходная фотография.

Первоначально опубликовано на http://glassboxmedicine.com 4 февраля 2020 г.