Conjuntos de datos: división del conjunto de datos original

Todos los buenos proyectos de ingeniería de software dedican una energía considerable a probar sus apps. Del mismo modo, te recomendamos que pruebes tu modelo de IA para determinar la exactitud de sus predicciones.

Debes probar un modelo con un conjunto de ejemplos diferente de los que se usaron para entrenarlo. Como aprenderás un poco más adelante, realizar pruebas en diferentes ejemplos es una prueba más sólida de la aptitud de tu modelo que realizar pruebas en el mismo conjunto de ejemplos. ¿De dónde obtienes esos diferentes ejemplos? Tradicionalmente, en el aprendizaje automático, se obtienen esos diferentes ejemplos dividiendo el conjunto de datos original. Por lo tanto, podrías imaginar que debes dividir el conjunto de datos original en dos subconjuntos:

Figura 8: Barra horizontal dividida en dos: el ~80% corresponde al conjunto de entrenamiento y el ~20%, al conjunto de prueba.
Figura 8: No es una división óptima.

 

Ejercicio: Comprueba tu intuición

Supongamos que entrenas en el conjunto de entrenamiento y evalúas en el conjunto de prueba en varias rondas. En cada ronda, usas los resultados del conjunto de pruebas para guiarte sobre cómo actualizar los hiperparámetros y el conjunto de características. ¿Puedes ver algo erróneo en este enfoque? Elige una sola respuesta.
Realizar varias rondas de este procedimiento podría provocar que el modelo se ajuste de manera implícita a las peculiaridades del conjunto de prueba.
Este enfoque es ineficiente en términos de procesamiento. No cambies los hiperparámetros ni los conjuntos de atributos después de cada ronda de pruebas.
Este enfoque está bien. Después de todo, entrenas con el conjunto de entrenamiento y evalúas con un conjunto de prueba independiente.

Dividir el conjunto de datos en dos conjuntos es una buena idea, pero un mejor enfoque es dividirlo en tres subconjuntos. Además del conjunto de entrenamiento y el conjunto de prueba, el tercer subconjunto es el siguiente:

Figura 9: Una barra horizontal dividida en tres partes: el 70% es el conjunto de entrenamiento, el 15% es el conjunto de validación y el 15% es el conjunto de prueba.
Figura 9: Una división mucho mejor.

Usa el conjunto de validación para evaluar los resultados del conjunto de entrenamiento. Después de que el uso repetido del conjunto de validación sugiera que tu modelo hace buenas predicciones, usa el conjunto de prueba para verificarlo.

En la siguiente figura, se sugiere este flujo de trabajo. En la figura, “Ajustar modelo” significa ajustar cualquier aspecto del modelo, desde cambiar la tasa de aprendizaje, agregar o quitar atributos, hasta diseñar un modelo completamente nuevo desde cero.

Figura 10: Un diagrama de flujo de trabajo que consta de las siguientes etapas:
            1. Entrena el modelo en el conjunto de entrenamiento.
            2. Evalúa el modelo en el conjunto de validación.
            3. Ajusta el modelo según los resultados del conjunto de validación.
            4. Itera en 1, 2 y 3, y, en última instancia, elige el modelo que tenga el mejor rendimiento en el conjunto de validación.
            5. Confirma los resultados en el conjunto de prueba.
Figura 10: Un buen flujo de trabajo para el desarrollo y las pruebas

El flujo de trabajo que se muestra en la Figura 10 es óptimo, pero incluso con ese flujo de trabajo, los conjuntos de prueba y los conjuntos de validación siguen “desgastándose” con el uso repetido. Es decir, cuanto más uses los mismos datos para tomar decisiones sobre la configuración de los hiperparámetros o sobre otras mejoras del modelo, menos confianza tendrás en que el modelo haga buenas predicciones sobre datos nuevos. Por este motivo, es una buena idea recopilar más datos para “actualizar” el conjunto de pruebas y el conjunto de validación. Comenzar de nuevo es un gran restablecimiento.

Ejercicio: Comprueba tu intuición

Reprobaste todos los ejemplos del conjunto de datos y los dividiste en conjuntos de entrenamiento, validación y prueba. Sin embargo, el valor de pérdida en tu conjunto de prueba es tan asombrosamente bajo que sospechas que se trata de un error. ¿Qué podría haber salido mal?
El entrenamiento y las pruebas no son deterministas. A veces, por casualidad, la pérdida de la prueba es increíblemente baja. Vuelve a ejecutar la prueba para confirmar el resultado.
Por casualidad, el conjunto de prueba contenía ejemplos en los que el modelo tuvo un buen rendimiento.
Muchos de los ejemplos del conjunto de prueba son duplicados de ejemplos del conjunto de entrenamiento.

Problemas adicionales con las prácticas guiadas

Como se ilustra en la pregunta anterior, los ejemplos duplicados pueden afectar la evaluación del modelo. Después de dividir un conjunto de datos en conjuntos de entrenamiento, validación y prueba, borra los ejemplos del conjunto de validación o de prueba que sean duplicados de los ejemplos del conjunto de entrenamiento. La única prueba justa de un modelo es con ejemplos nuevos, no con duplicados.

Por ejemplo, considera un modelo que predice si un correo electrónico es spam, usando el asunto, el cuerpo del correo electrónico y la dirección de correo electrónico del remitente como atributos. Supongamos que divides los datos en conjuntos de entrenamiento y de prueba, con una división de 80/20. Después del entrenamiento, el modelo logra una precisión del 99% en el conjunto de entrenamiento y en el conjunto de prueba. Es probable que esperes una precisión más baja en el conjunto de prueba, por lo que vuelves a mirar los datos y descubres que muchos de los ejemplos del conjunto de prueba son duplicados de ejemplos del conjunto de entrenamiento. El problema es que no limpiaste las entradas duplicadas del mismo correo electrónico de spam de tu base de datos de entrada antes de dividir los datos. Entrenaste con algunos de tus datos de prueba de forma accidental.

En resumen, un buen conjunto de pruebas o de validación cumple con todos los siguientes criterios:

  • Suficientemente grande para generar resultados de pruebas estadísticamente significativos.
  • Representativo de todo el conjunto de datos. En otras palabras, no elijas un conjunto de prueba con características diferentes a las del conjunto de entrenamiento.
  • Representan los datos del mundo real que el modelo encontrará como parte de su propósito comercial.
  • Cero ejemplos duplicados en el conjunto de entrenamiento.

Ejercicios: Comprueba tu comprensión

Dado un solo conjunto de datos con una cantidad fija de ejemplos, ¿cuál de las siguientes afirmaciones es verdadera?
Cada ejemplo que se usa para probar el modelo es un ejemplo menos que se usa para entrenarlo.
La cantidad de ejemplos del conjunto de prueba debe ser mayor que la cantidad de ejemplos del conjunto de validación o entrenamiento.
La cantidad de ejemplos en el conjunto de prueba debe ser mayor que la cantidad de ejemplos en el conjunto de validación.
Supongamos que tu conjunto de prueba contiene suficientes ejemplos para realizar una prueba con importancia estadística. Además, las pruebas con el conjunto de prueba generan una baja pérdida. Sin embargo, el modelo tuvo un rendimiento deficiente en el mundo real. ¿Qué deberías hacer?
Vuelve a realizar la prueba en el mismo conjunto de pruebas. Es posible que los resultados de la prueba sean una anomalía.
Determina en qué se diferencia el conjunto de datos original de los datos reales.
¿Cuántos ejemplos debe contener el conjunto de pruebas?
Al menos el 15% del conjunto de datos original
Suficientes ejemplos para generar una prueba con importancia estadística