Tengo un conjunto de prueba de 100 casos y dos clasificadores.
Generé predicciones y calculé ROC AUC, sensibilidad y especificidad para ambos clasificadores.
Pregunta 1: ¿Cómo puedo calcular el valor p para verificar si uno es significativamente mejor que el otro con respecto a todos los puntajes (ROC AUC, sensibilidad, especificidad)?
Ahora, para el mismo conjunto de prueba de 100 casos, tengo asignaciones de funciones diferentes e independientes para cada caso. Esto se debe a que mis características son fijas pero subjetivas y provistas por múltiples (5) sujetos.
Entonces, evalué mis dos clasificadores nuevamente para 5 "versiones" de mi conjunto de prueba y obtuve 5 AUC ROC, 5 sensibilidades y 5 especificidades para ambos clasificadores. Luego, calculé la media de cada medida de rendimiento para 5 sujetos (AUC media ROC, sensibilidad media y especificidad media) para ambos clasificadores.
Pregunta 2: ¿Cómo puedo calcular el valor p para verificar si uno es significativamente mejor que el otro con respecto a las puntuaciones medias (AUC media ROC, sensibilidad media, especificidad media)?
Las respuestas con algún ejemplo de python (preferiblemente) o código MatLab son más que bienvenidas.
Respuestas:
Wojtek J. Krzanowski y David J. Hand ROC Curves for Continuous Data (2009) es una gran referencia para todo lo relacionado con las curvas ROC. Reúne una serie de resultados en lo que es una base de literatura frustrantemente amplia, que a menudo utiliza una terminología diferente para discutir el mismo tema.
Además, este libro ofrece comentarios y comparaciones de métodos alternativos que se han derivado para estimar las mismas cantidades, y señala que algunos métodos hacen suposiciones que pueden ser insostenibles en contextos particulares. Este es uno de esos contextos; otras respuestas informan el método de Hanley y McNeil, que asume el modelo binormal para la distribución de puntajes, que puede ser inapropiado en casos donde la distribución de puntajes de clase no es (casi) normal. La suposición de puntajes distribuidos normalmente parece especialmente inapropiada en contextos modernos de aprendizaje automático , los modelos comunes típicos como xgboost tienden a producir puntajes con una distribución de "bañera" para tareas de clasificación (es decir, distribuciones con altas densidades en los extremos cerca de 0 y 1 )
Pregunta 1 - AUC
La sección 6.3 discute las comparaciones de ROC AUC para dos curvas ROC (pp 113-114). En particular, entiendo que estos dos modelos están correlacionados, por lo que la información sobre cómo calcularr es críticamente importante aquí; de lo contrario, su estadística de prueba estará sesgada porque no tiene en cuenta la contribución de la correlación.
Como otras respuestas dan las expresiones de Hanley y McNeil para estimadores de varianza AUC, aquí reproduciré el estimador DeLong de p. 68:
Este es un resumen simplificado de alto nivel de cómo funciona la prueba de hipótesis:
La prueba, en sus palabras, "si un clasificador es significativamente mejor que el otro" puede reformularse como prueba de la hipótesis nula de que los dos modelos tienen AUC estadísticamente iguales contra la hipótesis alternativa de que las estadísticas son desiguales.
Esta es una prueba de dos colas.
Rechazamos la hipótesis nula si el estadístico de prueba está en la región crítica de la distribución de referencia, que es una distribución normal estándar en este caso.
Pregunta 1 - Sensibilidad y especificidad
El punto de conflicto principal es desarrollar la prueba adecuada dado que las dos proporciones de la muestra estarán correlacionadas (ya que ha aplicado dos modelos a los mismos datos de prueba). Esto se aborda en la p. 111)
Pregunta 2
Parece que es suficiente fusionar los resultados promediando los valores de predicción para cada encuestado, de modo que para cada modelo tenga 1 vector de 100 valores pronosticados promediados. Luego calcule las estadísticas de ROC AUC, sensibilidad y especificidad como de costumbre, como si los modelos originales no existieran. Esto refleja una estrategia de modelado que trata a cada uno de los modelos de los 5 encuestados como uno de un "comité" de modelos, algo así como un conjunto.
fuente
Permítanme mantener la respuesta breve, porque esta guía explica mucho más y mejor .
Para comparar dos AUC, debe calcular el SE de ambos utilizando:
Desde allí, puede calcular el valor p utilizando la densidad de probabilidad de una distribución normal estándar. O simplemente usa esta calculadora.
Con suerte, esto responde a la pregunta 1 . - al menos la parte que compara las AUC. Sens / Spec ya está cubierto por el ROC / AUC de alguna manera. De lo contrario, la respuesta que creo radica en la pregunta 2.
En cuanto a la Pregunta 2 , el Teorema del límite central nos dice que su estadística resumida seguiría una distribución normal. Por lo tanto, creo que una prueba t simple sería suficiente (5 medidas de un clasificador contra 5 medidas del segundo clasificador donde las medidas podrían ser AUC, sens, spec)
fuente
Para la pregunta 1, @Sycorax proporcionó una respuesta integral.
Para la pregunta 2, que yo sepa, promediar las predicciones de los sujetos es incorrecto. Decidí usar bootstrapping para calcular los valores p y comparar modelos.
En este caso, el procedimiento es el siguiente:
Este procedimiento realiza una prueba de una cola y supone que M1 significa rendimiento> M2 rendimiento promedio.
En este repositorio de GitHub: https://github.com/mateuszbuda/ml-stat-util se puede encontrar una implementación de arranque de Python para calcular valores p que comparan varios lectores
fuente