38 votos

La precisión de la prueba es mayor que la del entrenamiento. ¿Cómo se interpreta?

Tengo un conjunto de datos que contiene como máximo 150 ejemplos (divididos en entrenamiento y prueba), con muchas características (más de 1000). Necesito comparar los clasificadores y los métodos de selección de características que funcionan bien en los datos. Por lo tanto, estoy utilizando tres métodos de clasificación (J48, NB, SVM) y 2 métodos de selección de características (CFS, WrapperSubset) con diferentes métodos de búsqueda (Greedy, BestFirst).

Al comparar, me fijo en la precisión del entrenamiento (pliegue cruzado de 5 veces) y en la precisión de la prueba.

Este es uno de los resultados de J48 y CFS-BestFirst:

{ "accuracyTraining" : 95,83, "accuracyTest" : 98,21 }

Muchos resultados son así, y en la SVM hay muchos resultados que indican que la precisión de la prueba es mucho mayor que la del entrenamiento (entrenamiento: 60%, prueba: 98%)

¿Cómo puedo interpretar significativamente este tipo de resultados? Si fuera más bajo, diría que es un exceso de ajuste. ¿Hay algo que decir sobre el sesgo y la varianza en este caso mirando todos los resultados? ¿Qué puedo hacer para que esta clasificación tenga sentido, como por ejemplo volver a seleccionar los conjuntos de entrenamiento y prueba o simplemente utilizar la validación cruzada en todos los datos?

Tengo 73 instancias de entrenamiento y 58 de prueba. Algunas respuestas no tenían esta información cuando se publicaron.

27voto

cbeleites Puntos 12461

Creo que un primer paso es comprobar si los resultados de la formación y de las pruebas son realmente correctos.

  • ¿La división durante la validación cruzada de 5 veces se realiza de forma que se obtengan conjuntos de entrenamiento/prueba de cv estadísticamente independientes? Por ejemplo, si hay mediciones repetidas en los datos, ¿acaban siempre en el mismo conjunto?

  • El 95,83% de precisión en un cv de 5 pliegues de 150 muestras está en consonancia con 5 casos erróneos de 130 muestras de entrenamiento para los 5 modelos sustitutos, o 25 casos erróneos para 5 * 130 muestras de entrenamiento.

  • El 98,21% de precisión de la prueba es más difícil de explicar: durante una ejecución del cv, cada caso debe probarse una vez. Por lo tanto, las posibles cifras indicadas deberían ser en pasos de 100%/150. El 98,21% corresponde a 2,68 casos erróneos (2 y 3 erróneos de 150 casos de prueba dan 98,67 y 98,00% de precisión, respectivamente).

  • Si puede extraer su modelo, calcule las precisiones reportadas externamente.

  • ¿Cuáles son las precisiones registradas para la entrada aleatoria?

  • Haga una validación cruzada externa: divida sus datos y entregue al programa sólo la parte de entrenamiento. Prediga los datos de prueba "externos" y calcule la precisión. ¿Coincide con los resultados del programa?

  • Asegúrese de que la "exactitud de la prueba" notificada procede de datos independientes (validación cruzada doble/anidada): si su programa realiza una optimización basada en los datos (por ejemplo, elegir las "mejores" características comparando muchos modelos), esto se parece más a un error de entrenamiento (bondad de ajuste) que a un error de generalización.

Estoy de acuerdo con @mbq en que el error de entrenamiento casi nunca es útil en el aprendizaje automático. Pero puede que te encuentres en una de las pocas situaciones en las que realmente es útil: Si el programa selecciona un "mejor" modelo comparando precisiones, pero sólo tiene errores de entrenamiento para elegir, hay que comprobar si el error de entrenamiento permite realmente una elección sensata.
@mbq esbozó el mejor escenario para los modelos indistintos. Sin embargo, también se dan escenarios peores: al igual que la precisión de las pruebas, la precisión del entrenamiento también está sujeta a la varianza, pero tiene un sesgo optimista en comparación con la precisión de la generalización, que es lo que suele interesar. Esto puede llevar a una situación en la que los modelos no puedan distinguirse aunque realmente tengan un rendimiento diferente. Pero sus precisiones de entrenamiento (o cv interno) están demasiado cerca para distinguirlos debido a su sesgo optimista. Por ejemplo, los métodos iterativos de selección de características pueden estar sujetos a este tipo de problemas que incluso pueden persistir para las precisiones de validación cruzada interna (dependiendo de cómo se implemente esa validación cruzada).

Por lo tanto, si pudiera surgir un problema de este tipo, creo que es una buena idea comprobar si es posible que una elección sensata resulte de las precisiones que el programa utiliza para la decisión. Esto significaría comprobar que la precisión del cv interno (que supuestamente se utiliza para la selección del mejor modelo) no está o no está demasiado sesgada de forma optimista con respecto a un cv realizado externamente con una división estadísticamente independiente. De nuevo, los datos sintéticos y/o aleatorios pueden ayudar a averiguar lo que el programa hace realmente.

Un segundo paso es comprobar si las diferencias observadas para las divisiones estadísticamente independientes son significativas, como ya ha señalado @mbq.

Le sugiero que calcule la diferencia de precisión que debe observar con el tamaño de la muestra para que la diferencia sea estadísticamente significativa. Si la variación observada es menor, no puedes decidir qué algoritmo es mejor con tu conjunto de datos dado: una mayor optimización no tiene sentido.

20voto

Cómo interpretar una precisión de la prueba superior a la del conjunto de entrenamiento.

Lo más probable es que el culpable sea tu porcentaje de división tren/prueba. Imagínese que está utilizando el 99% de los datos para entrenar y el 1% para probar, entonces obviamente la precisión del conjunto de pruebas será mejor que la del conjunto de pruebas, 99 de cada 100 veces. La solución es utilizar el 50% de los datos para entrenar y el 50% para evaluar el modelo.

La precisión en el conjunto de entrenamiento puede ser ruido, dependiendo del algoritmo de ML que esté utilizando. La precisión del conjunto de entrenamiento no evalúa la corrección de su modelo en las filas no vistas. Una estrategia es ignorar la precisión del conjunto de entrenamiento.

Para obtener una imagen más clara de qué opciones de hiperparámetros de su modelo (división de entrenamiento/prueba, iteraciones, criterios de convergencia, tasa de aprendizaje alfa, etc.) son las más responsables de que su modelo tenga una precisión superior en el conjunto de pruebas, ejecute su modelo 100 veces para cada opción de hiperparámetro, y luego promedie las diferencias entre la precisión de entrenamiento y la precisión de prueba.

Otra estrategia consiste en agrupar los modelos en una lista de N modelos, todos ellos entrenados con una proporción de 50/50 en el entrenamiento y la prueba. Así, todos los modelos tienen acceso a todos los datos, pero ninguno de ellos puede observar más del 50% de los datos de entrenamiento. Si el resultado medio es el correcto, la precisión del entrenamiento y la precisión de las pruebas serán mucho más parecidas.

12voto

dan90266 Puntos 609

Hay algunos problemas serios con la forma en que has hecho esto. En primer lugar, la división de los datos no es fiable a menos que el tamaño total de la muestra sea enorme. Se obtendrían resultados diferentes si se volviera a dividir. Entre otras cosas, no estás considerando los intervalos de confianza en las estimaciones de precisión. En segundo lugar, la validación cruzada de 5 veces no es lo suficientemente precisa. Puede ser necesario repetirla 100 veces para conseguir una precisión adecuada. En tercer lugar, ha elegido como puntuación de precisión una regla de puntuación discontinua impropia (proporción clasificada correctamente). Esta regla de puntuación inadecuada conducirá a la selección de un modelo incorrecto.

3voto

Bastien974 Puntos 483

Suponiendo que no hay ningún fallo en la implementación de los algoritmos, veamos el problema.

Imagine que toma un pequeño subconjunto de sus datos de entrenamiento y ejecuta su algoritmo de aprendizaje en él. Obviamente, lo hará muy bien. Siempre es posible extraer un subconjunto que logre una precisión cercana al 98%.

¿Son sus datos de prueba muy similares a este subconjunto? Si la respuesta es afirmativa, hay que ir a recoger más datos, a ser posible un poco más variados. Desde el punto de vista de la varianza del sesgo, yo diría que su varianza es alta.

1voto

Tiene demasiadas características (1000) para el número de muestras que tiene (150). Tienes que aumentar las muestras o reducir el número de características.

Dicen que normalmente el número de características ^2 = el número de muestras necesarias. Así que necesitas al menos un millón de muestras.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X