Precisión de prueba más alta que el entrenamiento. ¿Cómo interpretar?

23

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 clasificadores y métodos de selección de características que funcionan bien en los datos. Entonces, estoy usando 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, estoy viendo la precisión del entrenamiento (plegado cruzado 5 veces) y la precisión de la prueba.

Aquí está uno de los resultados de J48 y CFS-BestFirst:

{"precisionTraining": 95.83, "precisionTest": 98.21}

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

¿Cómo puedo interpretar de manera significativa este tipo de resultados? Si fuera más bajo, diría que es demasiado ajustado. ¿Hay algo que decir sobre el sesgo y la varianza en este caso al observar todos los resultados? ¿Qué puedo hacer para que esta clasificación sea significativa, como volver a seleccionar los conjuntos de entrenamiento y prueba o simplemente usar la validación cruzada en todos los datos?

Tengo 73 entrenamientos y 58 instancias de prueba. Algunas respuestas no tenían esta información cuando fueron publicadas.

ercu
fuente

Respuestas:

20

Creo que un primer paso es verificar si el entrenamiento informado y el rendimiento de la prueba son correctos.

  • ¿La división durante la validación cruzada de 5 veces se realiza de una manera que produce conjuntos de pruebas / trenes de cv estadísticamente independientes? Por ejemplo, si hay mediciones repetidas en los datos, ¿siempre terminan en el mismo conjunto?
  • La precisión del 95.83% en un cv de 5 muestras de 150 está en línea con 5 de 130 muestras de entrenamiento incorrectas para los 5 modelos sustitutos, o 25 casos incorrectos para 5 * 130 muestras de entrenamiento.
  • La precisión de la prueba del 98.21% es más difícil de explicar: durante una ejecución del cv, cada caso debe probarse una vez. Por lo tanto, los números posiblemente informados deben estar en pasos de 100% / 150. 98.21% corresponde a 2.68 casos incorrectos (2 y 3 incorrectos de 150 casos de prueba dan 98.67 y 98.00% de precisión, respectivamente).

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

  • ¿Cuáles son las precisiones informadas para la entrada aleatoria?
  • Haga una validación cruzada externa: divida sus datos y entregue solo la parte de capacitación al programa. Predecir los datos de prueba "externos" y calcular la precisión. ¿Está esto en línea con la salida del programa?
  • Asegúrese de que la "precisión de la prueba" informada provenga de datos independientes (validación cruzada doble / anidada): si su programa realiza una optimización basada en datos (por ejemplo, al elegir las "mejores" características al comparar muchos modelos), esto se parece más a un error de entrenamiento (bondad de ajuste) que como 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 encontrarse en una de las pocas situaciones en las que realmente es útil: si el programa selecciona un "mejor" modelo comparando las precisiones, pero solo tiene errores de entrenamiento para elegir, debe verificar si el error de entrenamiento realmente permite elección.
@mbq describió el mejor escenario para modelos indistinguibles. Sin embargo, también ocurren peores escenarios: al igual que la precisión de la prueba, la precisión del entrenamiento también está sujeta a variaciones, pero tiene un sesgo optimista en comparación con la precisión de generalización que generalmente es de interés. Esto puede conducir a una situación en la que los modelos no se pueden distinguir 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 de selección de características iterativas pueden estar sujetos a problemas que pueden persistir incluso para las precisiones internas de validación cruzada (dependiendo de cómo se implemente esa validación cruzada).

Entonces, si tal problema pudiera surgir, creo que es una buena idea verificar si una elección sensata puede resultar de las precisiones que el programa usa para la decisión. Esto significaría verificar que la precisión del cv interno (que supuestamente se usa para la selección del mejor modelo) no está o no demasiado sesgada de manera optimista con respecto a un cv hecho externamente con división estadísticamente independiente. Una vez más, los datos sintéticos y / o aleatorios pueden ayudar a descubrir qué hace realmente el programa.

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

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

cbeleites apoya a Monica
fuente
Hay una gran información aquí para digerir. en primer lugar, lamento mucho no haber dado los números exactos, ya que no esperaba que entraran en números tan detallados y también quería centrarme en un solo tema. de todos modos, tengo 73 datos de entrenamiento y 58 de prueba. estos no están estadísticamente separados, simplemente los tomé en diferentes momentos. Las muestras de entrenamiento se toman primero en el algoritmo de selección de características (el método de envoltura fs también tiene un cv interno de 5 veces) y luego se toma 5 veces y se toma la mejor precisión y se guarda el modelo. y luego ese modelo se usa para calcular la precisión de la prueba.
ercu
16

La precisión en un conjunto de entrenamiento no tiene sentido en el aprendizaje automático. Ignoralo.


fuente
¡Gracias! Tengo muchos resultados con la misma precisión de prueba, por lo que no puedo comparar los resultados ahora (también vería la precisión del entrenamiento para comparar si no lo ha dicho :). Entonces, en lugar de dividir para probar y entrenar, ¿es la ejecución múltiple de validación cruzada en todos los conjuntos de datos más apropiada para mi caso para comparar los resultados? o necesito alguna otra métrica?
ercu
1
CV es ciertamente una buena idea; de todos modos, tenga en cuenta que puede haber varios "mejores" algoritmos o conjuntos de parámetros (en el sentido de que ofrecen la misma precisión o una diferencia estadísticamente indistinguible del mejor de los casos); eso tampoco es un problema. Aún mejor, significa que está obteniendo resultados estables: un óptimo agudo puede sugerir que ha sobreajustado el modelo mediante la selección de parámetros.
8
Es útil conocer la precisión en el conjunto de entrenamiento para estimar la cantidad de sobreajuste que ha realizado su algoritmo predictivo (calculando la diferencia de precisión entre los conjuntos de entrenamiento y prueba).
Frank Harrell
¿Podrías explicar por qué?
inf
1
Por definición, los métodos de ML tratan sobre el rendimiento de datos no vistos, por lo que no ofrecen garantías sobre este resultado (no se espera que el modelo vuelva a implementar el mecanismo subyacente a los datos como en el modelado estadístico). En la práctica, muchos métodos dan predicciones demasiado precisas, por lo que solo es engañoso.
6

Hay algunos problemas serios con la forma en que lo ha hecho. En primer lugar, la división de datos no es confiable a menos que el tamaño total de la muestra sea enorme. Obtendría resultados diferentes si se divide de nuevo. Entre otras cosas, no está considerando 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 repetirlo 100 veces para lograr la precisión adecuada. Tercero, ha elegido como puntaje de precisión una regla de puntaje impropia discontinua (proporción clasificada correctamente). Dicha regla de puntuación incorrecta conducirá a la selección del modelo incorrecto.

Frank Harrell
fuente
3

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

Imagine tomar un pequeño subconjunto de sus datos de entrenamiento y ejecutar 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%.

¿Ahora sus datos de prueba son muy similares a este subconjunto? En caso afirmativo, debe ir y recopilar más datos, con suerte un poco más variado. Desde el punto de vista de Bias-Variance, diría que su varianza es alta.

shashydhar
fuente
1

Tiene demasiadas funciones (1000) para la cantidad de muestras que tiene (150). Necesita aumentar sus muestras o disminuir su número de funciones.

Dicen generalmente número de características ^ 2 = número de muestras necesarias. Entonces necesita al menos millones de muestras.

usuario798719
fuente
0

Eso puede suceder usando cualquier algoritmo ML e incluso clasificadores personalizados. Pruebe diferentes esquemas de validación cruzada k-fold, es decir, 2 o 10 veces también. Con una k más alta, se espera que se reduzca el error de prueba.

mehrdadorm
fuente