Última actualización el 8 de agosto de 2019
La elección de una prueba de hipótesis estadística es un problema abierto desafiante para interpretar los resultados de aprendizaje automático.
En su artículo ampliamente citado de 1998, Thomas Dietterich recomendó la prueba de McNemar en aquellos casos en los que es costoso o poco práctico entrenar múltiples copias de modelos clasificadores.
Esto describe la situación actual con los modelos de aprendizaje profundo que son muy grandes y se entrenan y evalúan en conjuntos de datos grandes, que a menudo requieren días o semanas para entrenar un solo modelo.
En este tutorial, descubrirá cómo usar la prueba de hipótesis estadística de McNemar para comparar modelos de clasificadores de aprendizaje automático en un único conjunto de datos de prueba.
Después de completar este tutorial, sabrá:
- La recomendación de la prueba de McNemar para modelos que son caros de entrenar, que se adapta a modelos grandes de aprendizaje profundo.
- Cómo transformar los resultados de predicción de dos clasificadores en una tabla de contingencia y cómo se utiliza la tabla para calcular la estadística en la prueba de McNemar.
- Cómo calcular la prueba de McNemar en Python e interpretar e informar el resultado.
Inicie su proyecto con my new book Statistics for Machine Learning, incluidos tutoriales paso a paso y los archivos de código fuente de Python para todos los ejemplos.
Comencemos.
Cómo Calcular la Prueba de McNemar para Dos Clasificadores de Aprendizaje Automático
Foto de Mark Kao, algunos derechos reservados.
- Descripción general del tutorial
- ¿Necesita ayuda con Estadísticas para el Aprendizaje Automático?
- Pruebas de Hipótesis Estadísticas para Aprendizaje Profundo
- Tabla de contingencia
- Estadística de prueba de McNemar
- Interpretar la Prueba de McNemar para clasificadores
- Sin Medida de la Variabilidad del Conjunto de Entrenamiento o del Modelo.
- Comparación menos directa de modelos
- Prueba de McNemar en Python
- Extensiones
- Más información
- Artículos
- API
- Artículos
- Resumen
- ¡Conoce las estadísticas para el Aprendizaje Automático!
- Desarrolle una comprensión práctica de las estadísticas
- Descubra cómo transformar los datos en Conocimiento
Descripción general del tutorial
Este tutorial se divide en cinco partes; son:
- Pruebas de Hipótesis Estadísticas para Aprendizaje Profundo
- Tabla de Contingencia
- Estadística de prueba de McNemar
- Interpretar la Prueba de McNemar para Clasificadores
- Prueba de McNemar en Python
¿Necesita ayuda con Estadísticas para el Aprendizaje Automático?
Tome mi curso intensivo de correo electrónico gratuito de 7 días ahora (con código de muestra).
Haga clic para inscribirse y también obtenga una versión gratuita en PDF del curso.
Descargue su Mini-Curso GRATUITO
Pruebas de Hipótesis Estadísticas para Aprendizaje Profundo
En su importante y ampliamente citado artículo de 1998 sobre el uso de pruebas de hipótesis estadísticas para comparar clasificadores titulado «Pruebas Estadísticas Aproximadas para Comparar Algoritmos de Aprendizaje de Clasificación Supervisada», Thomas Dietterich recomienda el uso de la prueba de McNemar.
Específicamente, la prueba se recomienda en aquellos casos en los que los algoritmos que se están comparando solo se pueden evaluar una vez, p. ej. en un conjunto de pruebas, a diferencia de las evaluaciones repetidas a través de una técnica de remuestreo, como la validación cruzada k-fold.
Para algoritmos que solo se pueden ejecutar una vez, la prueba de McNemar es la única prueba con error de tipo I aceptable.
— Pruebas Estadísticas Aproximadas para Comparar Algoritmos de Aprendizaje de Clasificación Supervisada, 1998.
Específicamente, el estudio de Dietterich se ocupó de la evaluación de diferentes pruebas de hipótesis estadísticas, algunas operando sobre los resultados de métodos de remuestreo. La preocupación del estudio fue un error de tipo I bajo, es decir, la prueba estadística que reporta un efecto cuando en realidad no hubo efecto (falso positivo).
Las pruebas estadísticas que pueden comparar modelos basados en un único conjunto de pruebas son una consideración importante para el aprendizaje automático moderno, específicamente en el campo del aprendizaje profundo.
Los modelos de aprendizaje profundo a menudo son grandes y funcionan en conjuntos de datos muy grandes. Juntos, estos factores pueden significar que el entrenamiento de un modelo puede tomar días o incluso semanas con hardware moderno y rápido.
Esto excluye el uso práctico de métodos de remuestreo para comparar modelos y sugiere la necesidad de usar una prueba que pueda operar sobre los resultados de la evaluación de modelos entrenados en un solo conjunto de datos de prueba.
La prueba de McNemar puede ser una prueba adecuada para evaluar estos modelos de aprendizaje profundo grandes y lentos de entrenar.
Tabla de contingencia
La prueba de McNemar opera sobre una tabla de contingencia.
Antes de sumergirnos en la prueba, tomemos un momento para comprender cómo se calcula la tabla de contingencia para dos clasificadores.
Una tabla de contingencia es una tabulación o recuento de dos variables categóricas. En el caso de la prueba de McNemar, estamos interesados en variables binarias correctas / incorrectas o sí/no para un control y un tratamiento o dos casos. Esto se denomina tabla de contingencia de 2×2.
La tabla de contingencia puede no ser intuitiva a primera vista. Vamos a hacerlo concreto con un ejemplo trabajado.
Tenga en cuenta que tenemos dos clasificadores capacitados. Cada clasificador hace una predicción de clase binaria para cada uno de los 10 ejemplos de un conjunto de datos de prueba. Las predicciones se evalúan y se determina que son correctas o incorrectas.
Luego podemos resumir estos resultados en una tabla, de la siguiente manera:
1
2
3
4
5
6
7
8
9
10
11
|
Ejemplo,Classifier1 Correcta,Classifier2 Correcta
1YesNo
2NoNo
3NoYes
4NoNo
5YesYes
6YesYes
7YesYes
8NoNo
9YesNo
10YesYes
|
Podemos ver que Classifier1 tiene 6 correcta, o una precisión del 60%, y la clasificación 2 obtuvo 5 correcta, o una precisión del 50% en el equipo de prueba.
La tabla ahora se puede reducir a una tabla de contingencia.
La tabla de contingencia se basa en el hecho de que ambos clasificadores fueron entrenados exactamente con los mismos datos de entrenamiento y evaluados en exactamente las mismas instancias de datos de prueba.
La tabla de contingencia tiene la siguiente estructura:
1
2
3
|
Classifier2 Correcta,Classifier2 Incorrecta
Classifier1 Correcta ????
¿Clasificación 1 incorrecta ?? ??
|
En el caso de la primera celda de la tabla, se debe sumar el número total de instancias de prueba que Classifier1 fueron correctas y Classifier2 fueron correctas. Por ejemplo, la primera instancia que ambos clasificadores predijeron correctamente fue la instancia número 5. El número total de instancias que ambos clasificadores predijeron correctamente fue de 4.
Otra forma más programática de pensar en esto es sumar cada combinación de Sí/No en la tabla de resultados anterior.
1
2
3
|
Classifier2 Correcta,Classifier2 Incorrecta
Classifier1 Correcta Sí/Sí/No
Classifier1 Incorrecta No/Sí No/No
|
Los resultados organizados en una tabla de contingencia es la siguiente:
1
2
3
|
Clasificador2 Correcto, Clasificador2 Incorrecto
Clasificador1 Correcto 42
Clasificador1 Incorrecto 1 3
|
Estadística de prueba de McNemar
La prueba de McNemar es una prueba de hipótesis estadística emparejada no paramétrica o libre de distribución.
También es menos intuitivo que otras pruebas de hipótesis estadísticas.
La prueba de McNemar está comprobando si los desacuerdos entre dos casos coinciden. Técnicamente, esto se conoce como la homogeneidad de la tabla de contingencia (específicamente la homogeneidad marginal). Por lo tanto, la prueba de McNemar es un tipo de prueba de homogeneidad para tablas de contingencia.
La prueba se usa ampliamente en medicina para comparar el efecto de un tratamiento con el de un control.
En términos de comparar dos algoritmos de clasificación binaria, la prueba está comentando si los dos modelos están en desacuerdo de la misma manera (o no). No se trata de comentar si un modelo es más o menos preciso o propenso a errores que otro. Esto queda claro cuando observamos cómo se calcula la estadística.
El estadístico de prueba de McNemar se calcula como:
1
|
estadística = (Sí/No – No/Sí)^2 / (Sí / No + No / Sí)
|
Donde Sí / No es el recuento de instancias de prueba que Classifier1 obtuvo lo correcto y Classifier2 obtuvo lo incorrecto, y No/Yes es el recuento de instancias de prueba que Classifier1 obtuvo lo incorrecto y Classifier2 obtuvo lo correcto.
Este cálculo de la estadística de ensayo supone que cada celda de la tabla de contingencia utilizada en el cálculo tiene un recuento de al menos 25. La estadística de la prueba tiene una distribución de Chi cuadrado con 1 grado de libertad.
Podemos ver que solo se utilizan dos elementos de la tabla de contingencia, específicamente que los elementos Sí/Sí y No/No no se utilizan en el cálculo de la estadística de prueba. Como tal, podemos ver que la estadística está reportando las diferentes predicciones correctas o incorrectas entre los dos modelos, no la precisión o las tasas de error. Esto es importante de entender al hacer afirmaciones sobre el hallazgo de la estadística.
La suposición predeterminada, o hipótesis nula, de la prueba es que los dos casos no están de acuerdo con la misma cantidad. Si la hipótesis nula es rechazada, sugiere que hay evidencia que sugiere que los casos están en desacuerdo de diferentes maneras, que los desacuerdos están sesgados.
Dada la selección de un nivel de significación, el valor p calculado por la prueba puede interpretarse de la siguiente manera:
- p > alfa: no rechazar H0, no hay diferencia en el desacuerdo(por ejemplo, el tratamiento no tuvo efecto).
- p <= alfa: rechazar H0, diferencia significativa en el desacuerdo (por ejemplo, el tratamiento tuvo un efecto).
Interpretar la Prueba de McNemar para clasificadores
Es importante tomarse un momento para comprender claramente cómo interpretar el resultado de la prueba en el contexto de dos modelos de clasificadores de aprendizaje automático.
Los dos términos utilizados en el cálculo de la Prueba de McNemar capturan los errores cometidos por ambos modelos. En concreto, las celdas No / Sí y Sí/No de la tabla de contingencia. La prueba comprueba si hay una diferencia significativa entre los recuentos en estas dos celdas. Eso es todo.
Si estas celdas tienen recuentos similares, nos muestra que ambos modelos cometen errores en la misma proporción, solo en diferentes instancias del conjunto de pruebas. En este caso, el resultado de la prueba no sería significativo y la hipótesis nula no sería rechazada.
Bajo la hipótesis nula, los dos algoritmos deben tener la misma tasa de error…
— Pruebas Estadísticas Aproximadas para Comparar Algoritmos de Aprendizaje de Clasificación Supervisada, 1998.
Si estas celdas tienen recuentos que no son similares, muestra que ambos modelos no solo cometen errores diferentes, sino que de hecho tienen una proporción relativa de errores diferente en el conjunto de pruebas. En este caso, el resultado de la prueba sería significativo y rechazaríamos la hipótesis nula.
Así que podemos rechazar la hipótesis nula a favor de la hipótesis de que los dos algoritmos tienen un rendimiento diferente cuando se entrena en el entrenamiento en particular
— Pruebas Estadísticas Aproximadas para Comparar Algoritmos de Aprendizaje de Clasificación Supervisada, 1998.
Podemos resumir esto de la siguiente manera:
- No rechazar Hipótesis nula: Los clasificadores tienen una proporción similar de errores en el conjunto de pruebas.
- Rechazar hipótesis nula: Los clasificadores tienen una proporción diferente de errores en el conjunto de pruebas.
Después de realizar la prueba y encontrar un resultado significativo, puede ser útil reportar una medida estadística de efectos para cuantificar el hallazgo. Por ejemplo, una opción natural sería informar los odds ratios, o la tabla de contingencia en sí, aunque ambos suponen un lector sofisticado.
Puede ser útil informar de la diferencia de error entre los dos clasificadores en el equipo de prueba. En este caso, tenga cuidado con sus afirmaciones, ya que la prueba significativa no reporta la diferencia de error entre los modelos, solo la diferencia relativa en la proporción de error entre los modelos.
Finalmente, al utilizar la prueba de McNemar, Dietterich destaca dos limitaciones importantes que deben ser consideradas. Son:
Sin Medida de la Variabilidad del Conjunto de Entrenamiento o del Modelo.
Generalmente, el comportamiento del modelo varía en función de los datos de entrenamiento específicos utilizados para ajustarse al modelo.
Esto se debe tanto a la interacción del modelo con instancias de entrenamiento específicas como al uso de la aleatoriedad durante el aprendizaje. Ajustar el modelo en múltiples conjuntos de datos de entrenamiento diferentes y evaluar la habilidad, como se hace con los métodos de remuestreo, proporciona una forma de medir la varianza del modelo.
El ensayo es adecuado si las fuentes de variabilidad son pequeñas.
Por lo tanto, la prueba de McNemar solo debe aplicarse si creemos que estas fuentes de variabilidad son pequeñas.
— Pruebas Estadísticas Aproximadas para Comparar Algoritmos de Aprendizaje de Clasificación Supervisada, 1998.
Comparación menos directa de modelos
Los dos clasificadores se evalúan en un solo equipo de prueba, y se espera que el equipo de prueba sea más pequeño que el equipo de entrenamiento.
Esto es diferente de las pruebas de hipótesis que hacen uso de métodos de remuestreo, ya que más, si no todo, el conjunto de datos está disponible como un conjunto de pruebas durante la evaluación (lo que introduce sus propios problemas desde una perspectiva estadística).
Esto proporciona menos oportunidades para comparar el rendimiento de los modelos. Requiere que el conjunto de pruebas sea un representante apropiado del dominio, lo que a menudo significa que el conjunto de datos de prueba es grande.
Prueba de McNemar en Python
La prueba de McNemar se puede implementar en Python usando la función Statsmodels de mcnemar ().
La función toma la tabla de contingencia como argumento y devuelve el estadístico de prueba calculado y el valor p.
Hay dos formas de usar la estadística dependiendo de la cantidad de datos.
Si hay una celda en la tabla que se utiliza en el cálculo de la estadística de la prueba que tiene un recuento inferior a 25, se utiliza una versión modificada de la prueba que calcula un valor p exacto utilizando una distribución binomial. Este es el uso predeterminado de la prueba:
1
|
stat , p = mcnemar (tabla, exacto = Verdadero)
|
Alternativamente, si todas las celdas utilizadas en el cálculo de la estadística de la prueba en la tabla de contingencia tienen un valor de 25 o más, se puede utilizar el cálculo estándar de la prueba.
1
|
stat , p = mcnemar (tabla, exacto = Falso, corrección = Verdadero)
|
Podemos calcular los McNemar en la tabla de contingencia de ejemplo descrita anteriormente. Esta tabla de contingencia tiene un pequeño recuento en ambas celdas de desacuerdo y, como tal, se debe usar el método exacto.
El ejemplo completo se muestra a continuación.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# Ejemplo de cálculo de la prueba de mcnemar
de statsmodels.estadísticas.contingency_tables importar mcnemar
# definir tabla de contingencia
tabla = ,
]
# calcular la prueba de mcnemar
resultado = mcnemar(tabla, exacto=Verdadero)
# resumir el hallazgo
imprimir(‘estadística=%.3f, valor de p=%.3f’ % (resultado.estadística, resultado.pvalue))
# interpreta el valor p
alpha = 0,05
if resultado.pvalue > alpha:
print («Las mismas proporciones de errores (no rechazar H0)»)
else:
print (‘Diferentes proporciones de errores (rechazar H0)’)
|
La ejecución del ejemplo calcula la estadística y el valor p en la tabla de contingencia e imprime los resultados.
Podemos ver que la prueba confirma fuertemente que hay muy poca diferencia en los desacuerdos entre los dos casos. La hipótesis nula no es rechazada.
Como estamos utilizando la prueba para comparar clasificadores, afirmamos que no hay diferencia estadísticamente significativa en los desacuerdos entre los dos modelos.
1
2
|
estadística=1.000, valor de p = 1.000
Las mismas proporciones de errores (no rechazar H0)
|
Extensiones
Esta sección enumera algunas ideas para ampliar el tutorial que tal vez desee explorar.
- Encuentre un artículo de investigación en aprendizaje automático que haga uso de la prueba de hipótesis estadística de McNemar.
- Actualice el ejemplo de código de manera que la tabla de contingencia muestre una diferencia significativa en el desacuerdo entre los dos casos.
- Implementar una función que utilizará la versión correcta de la prueba de McNemar basada en la tabla de contingencia proporcionada.
Si explora alguna de estas extensiones, me encantaría saberlo.
Más información
Esta sección proporciona más recursos sobre el tema si desea profundizar más.
Artículos
- Nota sobre el error de muestreo de la diferencia entre proporciones o porcentajes correlacionados, 1947.
- Pruebas Estadísticas Aproximadas para Comparar Algoritmos de Aprendizaje de Clasificación Supervisada, 1998.
API
- modelos de estado.estadísticas.mesas de contingencia.API de mcnemar ()
Artículos
- Prueba de McNemar en Wikipedia
- Errores de tipo I y tipo II en Wikipedia
- Tabla de contingencia en wikipedia
Resumen
En este tutorial, descubriste cómo usar el Prueba de hipótesis estadística de prueba de McNemar para comparar modelos de clasificadores de aprendizaje automático en un único conjunto de datos de prueba.
Específicamente, aprendiste:
- La recomendación de la prueba de McNemar para modelos que son caros de entrenar, que se adapta a modelos grandes de aprendizaje profundo.
- Cómo transformar los resultados de predicción de dos clasificadores en una tabla de contingencia y cómo se utiliza la tabla para calcular la estadística en la prueba de McNemar.
- Cómo calcular la prueba de McNemar en Python e interpretar e informar el resultado.
¿tiene alguna pregunta?
Haga sus preguntas en los comentarios a continuación y haré todo lo posible para responder.
¡Conoce las estadísticas para el Aprendizaje Automático!
Desarrolle una comprensión práctica de las estadísticas
…escribiendo líneas de código en python
Descubre cómo en mi nuevo libro electrónico:
Métodos estadísticos para Aprendizaje automático
Proporciona tutoriales de autoaprendizaje sobre temas como:
Pruebas de hipótesis, Correlación, Estadísticas no paramétricas, Remuestreo y mucho más…
Descubra cómo transformar los datos en Conocimiento
Omita los aspectos académicos. Sólo Resultados.
Ver Lo que hay Dentro