He etiquetado los datos compuestos por 10000 ejemplos positivos y 50000 ejemplos negativos, dando un total de 60000 ejemplos. Obviamente estos datos están desequilibrados.
Ahora digamos que quiero crear mi conjunto de validación, y quiero usar el 10% de mis datos para hacerlo. Mi pregunta es la siguiente:
¿Debo asegurarme de que mi conjunto de validación TAMBIÉN esté desequilibrado (como un guiño a la verdadera distribución del conjunto de entrenamiento), o debo asegurarme de que mi conjunto de validación esté equilibrado? Entonces, por ejemplo, mi conjunto de validación debe estar hecho de:
- 10% de ejemplos positivos + 10% de negativos, dando 1000+ y 5000- ejemplos. (Este conjunto de validación refleja el desequilibrio de datos original).
- ¿O debe hacerse el conjunto de validación de, digamos, 10% positivo, dando 1000+ y (10/5 = 2%) negativos, también dando 1000- ejemplos?
(La misma pregunta para el conjunto de prueba).
Parece que hay muchos métodos sobre cómo entrenar con datos desequilibrados, pero no puedo ver dónde encontrar mejores prácticas sobre si mi conjunto de validación TAMBIÉN debería reflejar el desequilibrio original o no. Finalmente, NO estoy haciendo validación cruzada, usaré un solo conjunto de validación y una red neuronal.
¡Gracias!
Respuestas:
El objetivo del conjunto de validación es seleccionar la época / iteración donde es más probable que la red neuronal funcione mejor en el conjunto de prueba. Posteriormente, es preferible que la distribución de clases en el conjunto de validación refleje la distribución de clases en el conjunto de prueba, de modo que las métricas de rendimiento en el conjunto de validación sean una buena aproximación de las métricas de rendimiento en el conjunto de prueba. En otras palabras, el conjunto de validación debe reflejar el desequilibrio de datos original.
fuente
Utilizando un entrenamiento y datos de prueba naturalmente desequilibrados, me topé con un escenario en el que mi modelo parecía estar mejorando con el tiempo, pero en realidad solo estaba memorizando las muestras de clases minoritarias en el conjunto de entrenamiento y aprendiendo a predecir siempre la clase mayoritaria para todo lo demás.
Diagnostiqué este problema al equilibrar los datos de mi prueba y observar que la precisión y la pérdida de los datos de la prueba empeoraron con más épocas (que no fue el caso con los datos de prueba desequilibrados).
Otra forma de diagnosticar problemas como este sería usar métricas como sensibilidad, especificidad o precisión para una sola clase en lugar de observar la precisión / pérdida general. Esta publicación de blog entra en más detalles sobre esto y ofrece una implementación de muestra de estas métricas en Keras http://www.deepideas.net/unbalanced-classes-machine-learning/
Creo que la solución correcta depende de la aplicación del mundo real de su modelo y de la importancia de la precisión de las clases minoritarias. Por ejemplo, si está entrenando algo como imagenet y nota que tiene poca precisión para su clase de "babosa de mar" que probablemente esté bien. Pero si estuviera entrenando un modelo para predecir si alguien tiene cáncer, entonces la precisión de la clase minoritaria sería muy importante.
fuente
Depende de lo que esté optimizando: ¿cuál es su distribución objetivo , sobre la cual le gustaría minimizar la pérdida esperada? Si es igual a la distribución de entrenamiento, entonces los datos de validación deben seguir la misma distribución. Si se trata de una distribución diferente (por ejemplo, si desea que su algoritmo funcione bien en datos equilibrados), en realidad desea minimizar la pérdida esperada sobre esa distribución, y su conjunto de validación debe muestrearse de acuerdo con esa distribución. Esta situación se llama "cambio de covariable", y existe toda una rama de investigación sobre lo que se llama "adaptación de cambio de covariable", es decir, tratar este problema. Hay un libro de Sugiyama / Kawanabe sobre el tema de 2012, llamado "
fuente