Conjuntos de datos de entrenamiento, desarrollo y prueba

Dialéktico
Compartir

CONTENIDO

Finalmente, hemos arribado al último tramo antes de iniciar la primeras exploraciones enfocadas en modelos de machine learning; en esta ocasión, la travesía será fugaz, pero no por ello menos importante, ya que trata sobre un paso intermedio entre el preprocesamiento y procesamiento de datos, y que es prácticamente indefectible antes de comenzar con el entrenamiento de todo modelo de aprendizaje de máquinas.

CDE Nivel 2
Equipaje recomendado
conjuntos de datos de prueba, desarrollo y entrenamiento

Nociones sobre conjuntos de datos

datos

Nociones sobre preprocesamiento de datos

conjuntos de datos de prueba, desarrollo y entrenamiento

Fundamentos de machine learning

ML elem

Tentempié

SnackEDP 2

¿Qué son los conjuntos de datos de entrenamiento, desarrollo y prueba?

conjuntos de datos de prueba, desarrollo y entrenamiento

Después de preprocesar un conjunto de datos, este ya está listo para ser computado por un algoritmo de machine learning; sin embargo, es necesario gestionar un aspecto de su estructura una última vez mediante un sencillo pero imprescindible paso: la división de este en subconjuntos, conocidos como conjuntos de entrenamiento, desarrollo, y prueba.

Estos conjuntos tienen diferentes objetivos a lo largo de la etapa de entrenamiento de un modelo de aprendizaje automático, y es menester entender el cómo y por qué de estas divisiones antes de comenzar a utilizar algoritmos de este tipo.

Revisaremos a detalle cada uno, su definición y la proporción que generalmente tienen respecto a todos los datos disponibles.

Conjunto de datos de entrenamiento (test set)

El conjunto de datos de entrenamiento (test set) es el subconjunto de datos que se procesa para la extracción de patrones, y con ello ajustar automáticamente los parámetros que constituyen al modelo resultante.

Es decir, es la porción de datos que se entrega de forma inicial a la máquina para que aprenda de estos.

conjuntos de datos de prueba, desarrollo y entrenamiento

Para ilustrar esto, recordaremos el ejemplo visto en nuestra primera exploración, en el que se entrena a un modelo para el reconocimiento de gatos en imágenes; en este caso, el conjunto de datos comprende la cantidad total de imágenes de animales que damos a la computadora para que aprenda a diferenciarlos.

Este ejemplo se había simplificado en la introducción al aprendizaje de máquinas de la siguiente forma:

E0EDP
Fig. 2.8.1 Ilustración simplificada del entrenamiento de un algoritmo cuya tarea es la de reconocer gatos de entre imágenes de distintos animales. Las entradas son las imágenes, y las salidas las clasificaciones dadas por el modelo entrenado. Tomado y adaptado de Introducción al aprendizaje de máquinas.

Ahora que tenemos mayor conocimiento sobre los conjuntos de datos etiquetados, podemos desarrollar un poco más esta ejemplificación mostrando parte de la estructura y etapas subyacentes de un algoritmo de machine learning, cuya primera fase describiremos como el aprendizaje de la máquina a partir del conjunto de datos de entrenamiento, el cual está compuesto de una porción de todo el conjunto de datos:

E1EDP 2
Fig. 2.8.2 Primera etapa del algoritmo de machine learning de nuestro ejemplo, en el que se introduce como entradas una porción del conjunto de datos, el cual identificamos como conjunto de datos de entrenamiento (recuadro rojo). El resultado de esta primera fase es la obtención de un modelo ajustado a los datos, capaz de estimar las salidas objetivo (en este caso, reconocer gatos) con un cierto grado de precisión.

El conjunto de datos de entrenamiento es la parte de todas nuestras imágenes que daremos a la máquina para este aprendizaje inicial. Es importante destacar que nunca le proporcionaremos el 100% de los datos, (al menos no en lo que respecta a los algoritmos de aprendizaje supervisado, los cuales estudiaremos primero en este curso), las razones se abordarán más adelante.

Tamaño del conjunto de datos de entrenamiento

La porción de datos que se debe elegir para el entrenamiento del modelo no será siempre la misma, ya que varía de acuerdo al tamaño del conjunto de datos, entre otros factores. Sin embargo, se suele recomendar que al menos el 70% de los datos estén dentro de este subconjunto, ya que se requieren suficientes ejemplos de entrenamiento para un ajuste óptimo del modelo (el tamaño definido puede variar significativamente conforme al número de ejemplos de entrenamiento disponibles).

Conjunto de datos de desarrollo (dev set)

Una vez que hemos seleccionado los datos a utilizar para generar el aprendizaje del modelo, ¿para qué necesitamos hacer otras divisiones del conjunto de datos?

La respuesta a esta cuestión se encuentra en la etapa posterior a la antes descrita, la cual es sumamente importante y característica del aprendizaje automático, ya que consiste en evaluar qué tan bien la máquina ha aprendido, es decir, qué tan bien se ha ajustado el modelo a los datos mediante la determinación de sus parámetros. Para estos fines, se distribuyen típicamente los datos en uno o dos subconjuntos más: el de desarrollo, y el de pruebas.

Hablemos sobre el primero.

El conjunto de datos de desarrollo o de validación (dev set), es el subconjunto que se utiliza para determinar el rendimiento del modelo operando sobre datos nuevos (que no pertenecen al conjunto de entrenamiento), y el cual se utiliza para ajustar sus hiperparámetros, lo cual significa configurar algoritmo utilizado hasta obtener resultados satisfactorios.

conjuntos de datos de prueba, desarrollo y entrenamiento
conjuntos de datos de prueba, desarrollo y entrenamiento

Los hiperparámetros son parámetros que definen algunos aspectos sobre las operaciones y estructura de un algoritmo de aprendizaje de máquinas, y que no se ajustan automáticamente porque se definen antes de la etapa de entrenamiento; por lo pronto no ahondaremos mucho en ello, pero será objeto de estudio en próximas expediciones.

El punto clave aquí es que el conjunto de datos de validación se entrega al modelo para evaluar su desempeño y con ello configurar el algoritmo utilizado para determinar qué configuración le favorece más. Esto sucede probando el modelo y cuantificando sus aciertos y errores. En nuestro ejemplo, la evaluación se realizaría utilizando el modelo para etiquetar como gatos o no gatos a nuevas imágenes que no provengan del conjunto de entrenamiento (por eso se genera otro subconjunto aparte).

Una vez evaluado el desempeño del modelo entrenado, se procede a realizar cambios en la arquitectura del modelo con el fin de dilucidar cuáles valores de su configuración proveen las salidas con la precisión más alta, como se muestra en la Figura 2.8.3.

E2EDP 2
Fig. 2.8.3 Esquema que muestra el uso del conjunto de datos de desarrollo después del conjunto de entrenamiento. El conjunto de datos de desarrollo (recuadro amarillo) permite evaluar cuál es el rendimiento del modelo ajustado mediante la etapa de aprendizaje, registrando sus aciertos y errores (en nuestro ejemplo, su precisión al calcular si se trata de un gato o no); esto permite modificar sus hiperparámetros (configuración del algoritmo), reentrenar el modelo con las nuevas modificaciones, y comenzar de nuevo el flujo de entrenamiento y evaluación, repitiendo el proceso tantas veces se necesite hasta lograr los resultados deseados.

El uso de un conjunto de datos de desarrollo es imprescindible su se desea experimentar con la configuración del algoritmo o algoritmos utilizados para el entrenamiento. Sin embargo, su uso no siempre está presente a la hora de ajustar modelos de machine learning. Todo dependerá de la complejidad de los datos, y de tus resultados preliminares. Habrá ocasiones en que solo necesites de un conjunto de entrenamiento y prueba, esto lo veremos más adelante.

Tamaño del conjunto de datos de desarrollo

Lo recomendable en cuanto al tamaño para este subconjunto es que abarque alrededor del 10% del conjunto original, pero esto dependerá del número total de ejemplos de entrenamiento. Por ejemplo, para un conjunto de datos de 1000 ejemplos de entrenamiento (en el ejemplo, 1000 imágenes), el 10% es 100, y parece suficiente para la etapa de desarrollo; pero si se tratara de un conjunto más grande, por ejemplo, de 1 millón de datos, el 10% serían 100 mil ejemplos de entrenamiento, por lo que incluso podría elegirse solo el 1% (10 mil) o menos para el tamaño del conjunto de validación.

Es importante tomar en cuenta esto último, ya que resalta la influencia de las dimensiones del conjunto de datos para la definición de las porciones de los subconjuntos de entrenamiento, desarrollo y prueba.

Conjunto de datos de prueba (test set)

Para finalizar, el conjunto de datos de prueba (test set) es el subconjunto de datos que pretende simular el uso del modelo de machine learning en producción, es decir, en situaciones fuera del entorno de desarrollo, o lo que podemos llamar como la evaluación de su rendimiento en las condiciones más cercanas al «mundo real».

Estos datos son nuevos para el modelo, no se hallan contenidos en el conjunto de entrenamiento o de validación, por lo que se utilizan para evaluar su desempeño final después de la elección de hiperparámetros, si es que llevaste a cabo una etapa de ajuste de estos.

La intención de este conjunto es responder a la cuestión: ¿qué tan preciso es el modelo en la ejecución sus tareas? Si los resultados son satisfactorios, entonces se puede generalizar que el modelo funcionará con el mismo rendimiento en datos nuevos ya no pertenecientes al conjunto de datos.

Respecto a nuestro ejemplo, esto se traduce en que, después de entrenar al modelo y seleccionar los hiperparámetros más convenientes, se evaluará una última vez con otro cúmulo de imágenes nuevas:

E5EDP 2
Fig. 2.8.4 Esquema que muestra el uso del conjunto de entrenamiento para la evaluación del modelo después del ajuste del algoritmo de aprendizaje automático. Una vez hecho esto, se evalúa el rendimiento del modelo resultante con un conjunto de datos de prueba. Si los resultados son favorecedores, se finaliza el proceso. En caso contrario, se realizan los ajustes pertinentes y se vuelven a realizar las mediciones.

Cuando se han finalizado los ajustes del algoritmo de machine learning, se evalúa de nuevo el modelo, pero ahora con un conjunto de datos completamente nuevo (conjunto de prueba). Este definirá que tan bien hace su trabajo el modelo obtenido. Si el rendimiento final no es el esperado, se vuelve a repetir el proceso realizando ajustes en el algoritmo u otros componentes asociados, como los datos o métricas de rendimiento, hasta alcanzar resultados satisfactorios.

CDE M2 2

Tamaño del conjunto de datos de prueba

Las dimensiones de este conjunto son similares a las del conjunto de datos de desarrollo: se recomienda un aproximado del 10% del total de los datos, ya que se requiere una cantidad no muy pequeña de ejemplos para poner a prueba el modelo. Como se explicó anteriormente, esto depende mucho del tamaño del conjunto de datos, por lo que porcentajes más chicos pueden ser igualmente funcionales.

Una distribución común de división del conjunto de datos es la proporción 80%-10%-10% para cada subconjunto respectivamente (train, dev, test), principalmente cuando se trata de conjuntos relativamente pequeños o medianos.


Notas:

  • Los conjuntos de datos en los códigos de machine learning que te encuentres en la red generalmente no se dividirán en los tres subconjuntos antes descritos, ya que el uso de un conjunto de desarrollo/validación está más enfocado en la experimentación en fases de la definición de la configuración del algoritmo, por lo que se suelen utilizar solo los conjuntos de entrenamiento y prueba. Sin embargo, en proyectos industriales o de investigación científica, se recomienda considerar el conjunto de validación para realizar pruebas de las arquitecturas de los modelos implicados.
  • Antes de hacer estas divisiones, es recomendable realizar un barajeo aleatorio de los ejemplos de entrenamiento. Esto se puede lograr fácilmente con funciones como shuffle de Sklearn en Python.
  • Si no has cachado todo lo visto en esta lección, no te preocupes, en un futuro muy próximo estaremos haciendo estas divisiones en prácticas de programación (y en la teoría), lo cual te ayudará a comprender su uso.

Contesta las siguientes preguntas

1 / 4

Supóngase que se tiene un conjunto de datos con 10,000 ejemplos de entrenamiento para entrenar un modelo de machine learning, ¿en qué momento se divide el conjunto de datos en los conjuntos de entrenamiento, desarrollo y prueba?

2 / 4

¿Cuál de los siguientes es un buen porcentaje de ejemplos de entrenamiento para el conjunto de datos de entrenamiento?

3 / 4

El conjunto de datos de desarrollo/validación se utiliza para:

4 / 4

¿Qué subconjunto del conjunto datos se utiliza para la evaluación del rendimiento final del modelo después del ajuste de hiperparámetros?

Tu puntación es

La puntuación media es 93%

0%

¡Hemos terminado!

Has finalizado tu entrenamiento en datos, lo que significa que en nuestra próxima exploración arrancaremos en terrenos más inmersos en el dominio del aprendizaje de máquinas, donde te adentrarás en el conocimiento de los algoritmos de aprendizaje supervisado, y podrás experimentar uno de estos por primera vez en Python.

conjuntos de datos de prueba, desarrollo y entrenamiento

DEJA TUS DUDAS O COMENTARIOS

Suscríbete
Notíficame de
guest

0 Comentarios
Más viejo
Más nuevo Más votado
Respuestas entre líneas
Ver todos los comentarios
0
¿Dudas, sugerencias, o comentarios? Deja un mensaje.x