Logotipo de Zephyrnet

Cómo crear un conjunto de datos para el aprendizaje automático

Fecha:

Cómo crear un conjunto de datos para el aprendizaje automático

Por qué es importante crear conjuntos de datos para el aprendizaje automático (ML)

 
Algo extraordinario está sucediendo.

La barrera de entrada al mundo de los algoritmos es cada vez más baja por el día. Eso significa que cualquier persona con el objetivo y las habilidades adecuadas puede encontrar excelentes algoritmos para tareas de aprendizaje automático (ML) e inteligencia artificial (IA): visión artificial, procesamiento de lenguaje natural, sistemas de recomendación o incluso conducción autónoma.

La informática de código abierto ha recorrido un largo camino y muchas iniciativas de código abierto están impulsando los vehículos de la ciencia de datos, el análisis digital y el aprendizaje automático. Los investigadores de las universidades y los laboratorios de I+D corporativos están creando nuevos algoritmos y técnicas de ML todos los días. Podemos decir con seguridad que los algoritmos, los marcos de programación, los paquetes de ML e incluso los tutoriales y cursos sobre cómo aprender estas técnicas ya no son recursos escasos.

Pero los datos de alta calidad sí lo son. Los conjuntos de datos, debidamente curados y etiquetados, siguen siendo un recurso escaso.

 

Cómo crear un conjunto de datos para el aprendizaje automático
Fig 1: Demasiados algoritmos pero difícilmente un buen conjunto de datos

Los buenos datos son un desafío incluso para las tareas básicas de ML

 
A menudo, no se trata de una discusión sobre cómo obtener datos de alta calidad para la genial aplicación de viajes o moda impulsada por IA en la que está trabajando. Ese tipo de recopilación de datos de consumidores, sociales o de comportamiento presenta sus propios problemas.

Cada campo de aplicación tiene su propio desafío para obtener los datos adecuados que necesita para entrenar modelos ML de alto rendimiento. Por ejemplo, LiDAR para vehículos autónomos necesita un conjunto de datos de nube de puntos 3D especial para la identificación de objetos y la segmentación semántica, que es extremadamente difícil de etiquetar a mano.

 

Cómo crear un conjunto de datos para el aprendizaje automático
Fig 2: Un conjunto de datos de nube de puntos LiDAR 3D: extremadamente difícil de etiquetar a mano para el entrenamiento. Imagen procedente de este documento

 

Sin embargo, incluso tener acceso a conjuntos de datos de calidad para la prueba y la ideación de algoritmos básicos de ML es un desafío. Digamos que un ingeniero de ML está aprendiendo desde cero. El consejo más sensato sería comenzar con conjuntos de datos simples a pequeña escala que él/ella pueda trazar en dos dimensiones para comprender los patrones visualmente y ver el funcionamiento interno del algoritmo ML de manera intuitiva. Sin embargo, a medida que aumentan las dimensiones de los datos, el juicio visual debe extenderse a asuntos más complicados: conceptos como aprendizaje y complejidad de la muestraeficiencia computacionaldesequilibrio de clases, etc.

 

Cómo crear un conjunto de datos para el aprendizaje automático
Fig 3: La exploración de modelos de datos y ML comienza de manera simple, luego explota. El conjunto de datos también debe evolucionar.

Conjuntos de datos sintéticos al rescate

 
Siempre se puede encontrar un conjunto de datos de la vida real o generar puntos de datos experimentando para evaluar y ajustar un algoritmo de ML. Sin embargo, con un conjunto de datos fijo, hay un número fijo de muestras, un patrón subyacente fijo y un grado fijo de separación de clases entre muestras positivas y negativas. Hay muchos aspectos de un algoritmo de ML que uno no puede probar o evaluar con un conjunto de datos tan fijo. Aquí hay unos ejemplos:

  • cómo la fracción de datos de prueba y entrenamiento afecta el rendimiento y la solidez del algoritmo
  • qué tan sólidas son las métricas frente a diversos grados de desequilibrio de clase
  • qué tipo de compensaciones sesgo-varianza se deben hacer
  • cómo funciona el algoritmo bajo varias firmas de ruido en el entrenamiento, así como datos de prueba (es decir, ruido en la etiqueta, así como en el conjunto de características)

Conjuntos de datos sintéticos acudir al rescate en todas estas situaciones. Los datos sintéticos son información fabricada artificialmente en lugar de generada por eventos del mundo real. Este tipo de datos es mejor para la validación simple de un modelo, pero también se usa para ayudar a entrenar. El beneficio potencial de tales conjuntos de datos sintéticos se puede medir fácilmente para aplicaciones sensibles: clasificaciones médicas o modelos financieros, donde obtener un conjunto de datos etiquetados de alta calidad suele ser costoso y prohibitivo.

Características de un buen conjunto de datos para ML (sintético o de la vida real)

 
Mientras que un conjunto de datos sintéticos se genera mediante programación, los conjuntos de datos de la vida real se seleccionan a partir de todo tipo de fuentes: experimentos sociales o científicos, historial de tratamientos médicos, datos de transacciones comerciales, actividades de navegación web, lectura de sensores o etiquetado manual de imágenes tomadas por cámaras automáticas o LiDAR. Independientemente de la fuente, siempre hay algunas características deseables para que un conjunto de datos sea valioso para el desarrollo de algoritmos de ML y el ajuste del rendimiento.

Aquí hay unos ejemplos,

  • Debe presentar un mezcla de numérico, binario o categórico Las características (ordinales o no ordinales) y la cantidad de características y la longitud del conjunto de datos no deben ser triviales.
  • Para datos sintéticos, el ruido aleatorio debe intercalarse de manera controlable
  • Debe haber algunos grado de aleatoriedad lo
  • Si es sintético, el usuario debe poder elegir una amplia variedad de distribuciones estadísticas para generar estos datos, es decir, los procesos/parámetros aleatorios subyacentes pueden controlarse y ajustarse con precisión.
  • Si se utiliza para algoritmos de clasificación, entonces el grado de separación de clases debería ser suficiente para lograr una precisión de clasificación decente, pero tampoco demasiado grande como para que el problema sea trivial. Para datos sintéticos, esto debe ser controlable para hacer que el problema de aprendizaje sea fácil o difícil.
  • Velocidad de generación debe ser bastante alto para permitir la experimentación con una gran variedad de dichos conjuntos de datos para cualquier algoritmo de ML en particular, es decir, si los datos sintéticos se basan en el aumento de datos en un conjunto de datos de la vida real, entonces el algoritmo de aumento debe ser computacionalmente eficiente
  • Para conjuntos de datos de la vida real, el costo de generacion de datos debe ser bajo y el el proceso debe ser eficiente en recursos para que la formación en ML no sobrecargue los objetivos de negocio
  • Para un problema de regresión, se puede utilizar un proceso generativo no lineal complejo para obtener los datos: modelos físicos reales o simulación por ordenador de procesos físicos puede venir a ayudar en este esfuerzo

Creación de conjuntos de datos de regresión, clasificación y agrupamiento para ML

 
Scikit-learn es la biblioteca de ML más popular en la pila de software basada en Python para la ciencia de datos. Además de las rutinas de ML bien optimizadas y los métodos de creación de canalizaciones, también cuenta con una sólida colección de métodos de utilidad para la generación de datos sintéticos. Podemos crear una amplia variedad de conjuntos de datos para el entrenamiento y ajuste regulares de algoritmos de ML.

 

Cómo crear un conjunto de datos para el aprendizaje automático
Fig 4: conjuntos de datos de regresión creados con Scikit-learn.

 
Cómo crear un conjunto de datos para el aprendizaje automático
Fig 5: conjuntos de datos de clasificación creados con Scikit-learn.

 
Cómo crear un conjunto de datos para el aprendizaje automático
Fig 6: conjuntos de datos de agrupamiento creados con Scikit-learn.

 
Cómo crear un conjunto de datos para el aprendizaje automático
Fig 7: conjuntos de datos no lineales para probar algoritmos basados ​​en kernel.

Modelos de mezcla gaussiana

 
Los modelos de mezcla gaussiana (GMM) son objetos fascinantes para estudiar. Se utilizan mucho en el campo del aprendizaje no supervisado y el modelado de temas para tareas masivas de procesamiento de texto/PNL. Incluso los algoritmos de conducción autónoma y navegación robótica tienen muchos usos para ellos. Con una cantidad mínima de código, se pueden crear conjuntos de datos interesantes que imitan el proceso GMM de forma y complejidad arbitrarias.

Aquí hay algunos ejemplos de datos sintéticos de lo mismo:

 

Cómo crear un conjunto de datos para el aprendizaje automático
Fig 8: conjuntos de datos del modelo de mezcla gaussiana creados sintéticamente.

Generación de conjuntos de datos a partir de expresiones simbólicas

 
A menudo, se puede requerir una forma controlable de generar conjuntos de datos de ML basados ​​en una función bien definida (que involucra términos lineales, no lineales, racionales o incluso trascendentales).

Por ejemplo, es posible que desee evaluar la eficacia de los diversos clasificadores SVM kernelizados en conjuntos de datos con separadores cada vez más complejos (lineales a no lineales) o desee demostrar la limitación de los modelos lineales para conjuntos de datos generados por funciones racionales o trascendentales. Al combinar el poder de la generación de variables aleatorias y bibliotecas de manipulación de expresiones simbólicas como SymPy, puede crear conjuntos de datos interesantes correspondientes a funciones definidas por el usuario.

 

Cómo crear un conjunto de datos para el aprendizaje automático
Fig 9: conjuntos de datos generados por funciones simbólicas para pruebas avanzadas de algoritmos de aprendizaje automático.

Generación de datos de series temporales/anomalías para problemas industriales

 
El análisis de series de tiempo tiene muchas aplicaciones ricas en entornos industriales modernos donde una multitud de sensores crean un flujo interminable de datos digitales de máquinas, fábricas, operadores y procesos comerciales. Tal escape digital es la característica central de la Industria 4.0 revolución.

Detección de anomalías en estos flujos de datos se encuentra el pan y la mantequilla de todos los productos, servicios y nuevas empresas de análisis de datos modernos. Están empleando todo, desde algoritmos de series temporales probados y probados hasta los últimos modelos de secuencias basados ​​en redes neuronales. Sin embargo, para las pruebas internas de estos algoritmos, a veces es necesario crear conjuntos de datos sintéticos que imiten las anomalías de diversa naturaleza en una serie temporal.

Este artículo profundiza en esta idea y muestra algunos ejemplos: Cree series de tiempo sintéticas con firmas de anomalías en Python.

 

Cómo crear un conjunto de datos para el aprendizaje automático
Fig 10: Proceso generativo básico para conjuntos de datos de series temporales en aplicaciones industriales.

 

Se pueden generar anomalías de varias escalas,

 

Cómo crear un conjunto de datos para el aprendizaje automático
Fig 11: Serie temporal con anomalías de varias escalas.

 

Deriva de datos puede ocurrir en cualquier dirección con cualquier escala. Los datos pueden cambiar una o más de sus propiedades estadísticas, por ejemplo, la media o la varianza. Esto también debe ser modelado y utilizado para la generación de conjuntos de datos.

 
Cómo crear un conjunto de datos para el aprendizaje automático


 

Cómo crear un conjunto de datos para el aprendizaje automático
Fig 12: conjuntos de datos de series temporales con anomalías y deriva de datos combinados.

Aumento de datos de imagen para ML

 
Ya existen muchos conjuntos de datos de imágenes buenos para el entrenamiento y ajuste de modelos básicos de aprendizaje profundo. Sin embargo, para tareas específicas o áreas de aplicación, los ingenieros de ML a menudo necesitan comenzar con un conjunto relativamente pequeño de imágenes de buena calidad y aumentarlas utilizando técnicas de procesamiento de imágenes inteligentes.

Aquí hay un blog que discute extensamente el trucos de aumento de datos con datos de imagen como ejemplos:

Básicamente, se pueden crear conjuntos de datos de imágenes de diversa profundidad y complejidad a partir de algunas imágenes semilla de alta calidad utilizando técnicas de aumento:

 

Cómo crear un conjunto de datos para el aprendizaje automático
Fig 13: aumento de datos de imágenes para crear conjuntos de datos ricos y sólidos para la formación de aprendizaje profundo.

 

También se puede experimentar con varios adiciones de canales de ruido para aumentar el conjunto de datos para que el modelo ML funcione bien en situaciones ruidosas.

 

Cómo crear un conjunto de datos para el aprendizaje automático
Fig 14: Aumento de datos de imagen con varias adiciones de canales de ruido.

Resumen

 
En este artículo, repasamos las motivaciones esenciales detrás de la creación de conjuntos de datos de aprendizaje automático de alta calidad y algunas propiedades deseables para dichos datos. Procesos comerciales y experimentos científicos, historia médica y de redes sociales: estos son y seguirán siendo la fuente más confiable para entrenar algoritmos ML con datos de la vida real.

Sin embargo, los conjuntos de datos sintéticos tienen una demanda cada vez mayor por el poder y la flexibilidad que brindan para evaluar y optimizar los algoritmos de ML.

Nos referimos brevemente a muchas herramientas, marcos y técnicas que se utilizan para generar dichos conjuntos de datos para ML y cómo se pueden adaptar con precisión a las necesidades del desarrollo de algoritmos. Este campo seguirá creciendo en importancia y puede ayudar en el desarrollo y el florecimiento de nuevos y emocionantes algoritmos, marcos y técnicas de ML.

 
 
kevin vu administra el blog de Exxact Corp y trabaja con muchos de sus talentosos autores que escriben sobre diferentes aspectos del Deep Learning.

Original. Publicado de nuevo con permiso.
 

punto_img

Información más reciente

punto_img