Conjuntos de datos de entrenamiento, desarrollo y prueba

Dialéktico
Compartir

CONTENIDO

Si hay notación matemática, se recomienda la visualización de este contenido en una computadora

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.

conjuntos de datos de prueba, desarrollo y entrenamiento
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

Snack

conjuntos de datos de prueba, desarrollo y entrenamiento

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

conjuntos de datos de prueba, desarrollo y entrenamiento

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

Revisemos a detalle cada uno, 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.

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 de la siguiente forma:

esquema
Fig. 2.7.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.

Ahora que tenemos mayor conocimiento sobre los conjuntos de datos, podemos desarrollar un poco más estas ejemplificaciones 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:

esquema conjuntos de entrenamiento
Fig. 2.7.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 en lo que respecta a los algoritmos de aprendizaje supervisado), las razones se abordarán más adelante.

Tamaño del conjunto de datos de entrenamiento

La porción de datos que se debe elevir 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 (qué tan bien se ha ajustado el modelo a los datos mediante la determinación de sus parámetros). Para estos fines, se distribuyen los datos en 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 hiperpárametros: experimentar y decidir cuáles de estos generan los mejores resultados.

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 del algoritmo de aprendizaje, y que no se ajustan automáticamente porque se definen antes de la etapa de entrenamiento (aunque hay algunos casos especiales que pueden cambiar conforme se procesand los datos); 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; 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.

Una vez evaluado el desempeño, se procede a realizar cambios en la arquitectura del modelo con el fin de dilucidar cuáles hiperparámetros proveen las mejores salidas, como se muestra en la figura 2.7.3.

esquema conjuntos train y dev
Fig. 2.7.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 su rendimiento, introduciendo las imágenes al modelo y registrando sus aciertos y errores al etiquetarlas; esto permite modificar sus hiperparámetros (última imagen) y comenzar de nuevo el flujo de entrenamiento con el fin de definir cuáles de estos producen los mejores resultados.

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, el 10% es 100, y parece apenas 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 del total para el tamaño del conjunto de validación.

Es importante tomar en cuenta esto último, ya que resalta la influencia de la extensión 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 conjunto 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); su intención 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:

Esquema conjuntos train, dev y test
Fig. 2.7.4 Esquema que muestra el uso del conjunto de entrenamiento para la evaluación del modelo después del ajuste de sus hiperparámetros. El resultado es el modelo final con sus respectivas medidas de rendimiento, el cual, para nuestro ejemplo, es un modelo que identifica gatos con algún grado de precisión.

En la siguiente figura se puede ver una generalización del esquema antes mostrado para cualquier modelo que requiera de la división de los conjuntos de entrenamiento, desarrollo y prueba:

Esquema general conjuntos de entrenamiento, desarrollo y prueba
Fig. 2.7.5 Esquema que muestra una generalización del uso de cada subconjunto del conjunto de datos para algoritmos de aprendizaje de máquinas.

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), sin embargo, esto aplica para conjuntos relativamente pequeños o medianos.


Notas:

  • Los conjunto 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 son meramente demostrativos y no se harán variar hiperparámetros, 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 desarrollo/validación para realizar pruebas en 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.

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 90%

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