Conjuntos de entrenamiento y prueba: división de datos

En el módulo anterior, se presentó la idea de dividir el conjunto de datos en dos subconjuntos:

  • Conjunto de entrenamiento: Un subconjunto para entrenar un modelo.
  • Conjunto de prueba: Un subconjunto para probar el modelo entrenado.

Puedes imaginarte dividir el único conjunto de datos de la siguiente manera:

Barra horizontal dividida en dos: el 80% corresponde al conjunto de entrenamiento y el 20%, al de prueba.

Figura 1: División de un único conjunto de datos en un conjunto de entrenamiento y un conjunto de prueba

Asegúrate de que tu conjunto de prueba cumpla con las siguientes dos condiciones:

  • Sea lo suficientemente grande como para generar resultados significativos desde el punto de vista estadístico.
  • Que sea representativo del conjunto de datos en su conjunto. En otras palabras, no elijas un conjunto de prueba con características diferentes a las del conjunto de entrenamiento.

Si suponemos que tu conjunto de prueba cumple con las dos condiciones anteriores, tu objetivo es crear un modelo que generalice correctamente los datos nuevos. Nuestro conjunto de prueba sirve como proxy para los datos nuevos. Por ejemplo, considera la siguiente imagen. Ten en cuenta que el modelo aprendido para los datos de entrenamiento es muy simple. Este modelo no hace un trabajo perfecto, ya que algunas predicciones son incorrectas. Sin embargo, este modelo funciona de la misma manera tanto en los datos de prueba como en los de entrenamiento. En otras palabras, este modelo simple no sobreajusta los datos de entrenamiento.

Dos modelos: uno se ejecuta con datos de entrenamiento y el otro con datos de prueba.  El modelo es muy sencillo: solo una línea divide los puntos anaranjados de los azules.  La pérdida en los datos de entrenamiento es similar a la pérdida en los datos de prueba.

Figura 2: Validación del modelo entrenado con los datos de prueba.

Nunca uses datos de prueba para el entrenamiento. Si ves resultados sorprendentemente buenos en tus métricas de evaluación, puede ser una señal de que estás entrenando accidentalmente en el conjunto de prueba. Por ejemplo, una precisión alta puede indicar que los datos de prueba se filtraron en el conjunto de entrenamiento.

Por ejemplo, considera un modelo que predice si un correo electrónico es spam mediante el uso del asunto, el cuerpo del correo electrónico y la dirección de correo electrónico del remitente como atributos. Repartimos los datos en conjuntos de entrenamiento y prueba en una división de 80-20. Después del entrenamiento, el modelo alcanza un 99% de precisión tanto en el conjunto de entrenamiento como en el de prueba. Esperamos una precisión más baja en el conjunto de prueba, por lo que volvemos a revisar los datos y descubrimos que muchos de los ejemplos del conjunto de prueba son duplicados de ejemplos en el conjunto de entrenamiento (no logramos arrastrar las entradas duplicadas para el mismo correo electrónico spam de nuestra base de datos de entrada antes de dividir los datos). Involuntariamente, entrenamos con algunos de nuestros datos de prueba y, como resultado, ya no estamos midiendo con precisión qué tan bien nuestro modelo generaliza con datos nuevos.