Cómo realizar una limpieza de datos efectiva para el aprendizaje automático

El paso más importante que puede realizar en su tubería de aprendizaje automático. Sin datos, las mejoras de algoritmo de su modelo probablemente no importarán. Después de todo, el dicho “basura, basura” no es solo un dicho, sino una verdad inherente dentro del aprendizaje automático. Sin datos adecuados de alta calidad, tendrá dificultades para crear un modelo de aprendizaje automático de alta calidad.

Esta infografía resume el artículo. Comienzo explicando mi motivación para este artículo y definiendo la limpieza de datos como una tarea. Luego sigo discutiendo tres técnicas de limpieza de datos diferentes, y algunas notas a tener en cuenta al realizar la limpieza de datos. Imagen de Chatgpt.

En este artículo, discuto cómo puede aplicar efectivamente la limpieza de datos a su propio conjunto de datos para mejorar la calidad de sus modelos de aprendizaje automático ajustado. Revisaré por qué necesita técnicas de limpieza de datos y limpieza de datos. Por último, también proporcionaré notas importantes a tener en cuenta, como mantener un breve bucle experimental

También puedes leer artículos sobre Operai Whisper para la transcripción, Asistir a Nvidia GTC París 2025, y Creación de poderosos incrustaciones para el aprendizaje automático.

Tabla de contenido

Motivación

Mi motivación para este artículo es que los datos son uno de los aspectos más importantes del trabajo como científico de datos o ingeniero de ML. Esta es la razón por la cual empresas como Tesla, Profundo, Opadaiy muchos otros se centran en la anotación de datos. Tesla, por ejemplo, tenía alrededor de 1500 empleados trabajando en la anotación de datos para su conducción autónoma completa.

Sin embargo, si tiene un conjunto de datos de baja calidad, tendrá dificultades para tener modelos de alto rendimiento. Es por eso que es tan importante limpiar sus datos después de la anotación. La limpieza es esencialmente un bloque fundamental de cada tubería de aprendizaje automático que involucra capacitar a un modelo.

Definición

Para ser explícito, defino la limpieza de datos como un paso que realiza después de su proceso de anotación de datos. Por lo tanto, ya tiene un conjunto de muestras y etiquetas correspondientes, y ahora tiene como objetivo limpiar esas etiquetas para garantizar la corrección.

Además, las palabras anotación y etiquetado a menudo se usan indistintamente. Creo que significan lo mismo, pero para consistencia, usaré solo anotación. Con la anotación de datos, me refiero al proceso de configuración de una etiqueta en una muestra de datos. Por ejemplo, si tiene una imagen de un gato, anotar la imagen significa configurar la anotación gato correspondiente a la imagen.

Técnicas de limpieza de datos

Es importante mencionar que en casos con conjuntos de datos más pequeños, puede optar por repasar todas las muestras y anotaciones por segunda vez. Sin embargo, en muchos escenarios, esta no es una opción, ya que la anotación de datos lleva demasiado tiempo. Es por eso que estoy enumerando varias técnicas a continuación para realizar la limpieza de datos de manera más efectiva.

Agrupación

La agrupación es una técnica común no supervisada En el aprendizaje automático. Con la agrupación, asigna un conjunto de etiquetas a muestras de datos, sin tener un conjunto de datos original de muestras y anotaciones.

Sin embargo, la agrupación también es una fantástica técnica de limpieza de datos. Este es el proceso que utilizo para realizar la limpieza de datos con la agrupación:

  1. Incrustar todas sus muestras de datos. Esto se puede hacer usando incrustaciones textuales utilizando un Modelo Bertincrustaciones visuales usando Squeezeneto incrustaciones combinadas como Incrustación de clip de OpenAi. El punto es que necesita una representación numérica de sus muestras de datos para realizar la agrupación
  2. Aplicar una técnica de agrupación. Prefiero K-mediasya que asigna un clúster a todas las muestras de datos, a diferencia de Escaneo DBque también tiene valores atípicos. (Los valores atípicos pueden ser adecuados en muchos escenarios, pero para la limpieza de datos es subóptima). Si está utilizando K-Means, debe experimentar con diferentes valores para el parámetro K.
  3. Ahora tiene una lista de muestras de datos y su clúster asignado. Luego itero a través de cada clúster y verifique si hay diferentes etiquetas dentro de cada clúster.

Ahora quiero elaborar en el paso 3. Usando un ejemplo. Usaré una simple tareas de clasificación binaria de asignar imágenes a las etiquetas.

Ahora tengo 10 imágenes, con las siguientes tareas del clúster. Como pequeño ejemplo, tendré siete muestras de datos, con dos asignaciones de clúster. En una tabla, las muestras de datos se ven así

Algunas muestras de datos de ejemplo junto con su asignación y etiquetas de clúster. Mesa del autor,

Si puede visualizarlo como a continuación:

Esta trama muestra una visualización del clúster de ejemplo. Imagen del autor.

Luego uso un bucle for para pasar por cada clúster, y decido qué muestra quiero mirar más (consulte el código de Python para esto más abajo)

  • Cluster A: En este clúster, todas las muestras de datos tienen la misma anotación (CAT). Por lo tanto, las anotaciones tienen más probabilidades de ser correctas. I no Necesita una revisión secundaria de estas muestras
  • Clúster B: Definitivamente queremos mirar más de cerca las muestras en este clúster. Aquí tenemos imágenes, con incrustaciones ubicadas estrechamente en el espacio de incrustación. Esto es muy sospechoso, ya que esperamos que incrustaciones similares tengan las mismas etiquetas. Miraré de cerca estas cuatro muestras

¿Puede ver cómo solo tuvo que pasar por 4/7 muestras de datos?

Así es como ahorras tiempo. Solo encuentra las muestras de datos que tienen más probabilidades de ser incorrectas. Puede expandir esta técnica a miles de muestras junto con más grupos, y ahorrará una enorme cantidad de tiempo.


Ahora también proporcionaré código para este ejemplo para resaltar cómo hago la agrupación con Python.

Primero, definamos los datos simulados:

sample_data = [
    {
        "image-idx": 0,
        "cluster": "A",
        "label": "Cat"
    },
    {
        "image-idx": 1,
        "cluster": "A",
        "label": "Cat"
    },
    {
        "image-idx": 2,
        "cluster": "A",
        "label": "Cat"
    },
    {
        "image-idx": 3,
        "cluster": "B",
        "label": "Cat"
    },
    {
        "image-idx": 4,
        "cluster": "B",
        "label": "Cat"
    },
    {
        "image-idx": 5,
        "cluster": "B",
        "label": "Dog"
    },
    {
        "image-idx": 6,
        "cluster": "B",
        "label": "Dog"
    },
    
]

Ahora iteramos sobre todos los grupos y encontremos las muestras que debemos ver:

from collections import Counter
# first retrieve all unique clusters
unique_clusters = list(set(item["cluster"] for item in sample_data))

images_to_look_at = []
# iterate over all clusters
for cluster in unique_clusters:
    # fetch all items in the cluster
    cluster_items = [item for item in sample_data if item["cluster"] == cluster]

    # check how many of each label in this cluster
    label_counts = Counter(item["label"] for item in cluster_items)
    if len(label_counts) > 1:
        print(f"Cluster {cluster} has multiple labels: {label_counts}. ")
        images_to_look_at.append(cluster_items)
    else:
        print(f"Cluster {cluster} has a single label: {label_counts}")

print(images_to_look_at)

Con esto, ahora solo tienes que revisar el imágenes_to_look en variable

Cleanlab

Cleanlab es otra técnica efectiva que puede aplicar para limpiar sus datos. CleanLab es una empresa que ofrece un producto para detectar errores dentro de su aplicación de aprendizaje automático. Sin embargo, ellos también Una herramienta de origen abierto en GitHub Para realizar la limpieza de datos usted mismo, que es lo que discutiré aquí.

Esencialmente, CleanLab toma sus datos, analiza sus incrustaciones de entrada (por ejemplo, aquellos que hizo con Bert, Squeezenet o Clip), así como los registros de salida del modelo. Luego realizan un análisis estadístico en sus datos para detectar muestras con la mayor probabilidad de etiquetas incorrectas.

CleanLab es una herramienta simple para configurar, ya que esencialmente solo requiere que proporcione sus datos de entrada y salida, y maneja el complicado análisis estadístico. He usado CleanLab y he visto cómo tiene una fuerte capacidad para detectar muestras con posibles errores de anotación.

Considerando que tienen un buen Readme Disponible, dejaré la implementación de CleanLab hasta el lector.

Predicción y comparación con anotaciones

La última técnica de limpieza de datos que atenderé es usar su modelo de aprendizaje automático ajustado para predecir en muestras y comparar con sus anotaciones. Esencialmente puede usar una técnica como K-Fold Validación cruzada, donde divide sus conjuntos de datos en varios pliegues de diferentes divisiones de trenes y pruebas, y predice en todo el conjunto de datos sin filtrar datos de prueba en su conjunto de capacitación.

Después de haber predicho en sus datos, puede comparar las predicciones con las anotaciones que tiene en cada muestra. Si la predicción corresponde con la anotación, no necesita revisar la muestra (existe una menor probabilidad de que esta muestra tenga la anotación incorrecta).

Resumen de técnicas

He presentado tres técnicas diferentes aquí.

  • Agrupación
  • Cleanlab
  • Predecir y comparar

El punto principal en cada una de estas técnicas es filtrar muestras que tengan una alta probabilidad de ser incorrecto y solo revisar esas muestras. Con esto, solo necesita revisar un subconjunto de sus muestras de datos, ahorrándole una inmensa cantidad de tiempo dedicado a revisar los datos. Las diferentes técnicas encajarán mejor en diferentes escenarios.

Por supuesto, también puede combinar técnicas junto con cualquiera Unión o intersección:

  • Usar el unión Entre las muestras encontradas con diferentes técnicas para encontrar más muestras que probablemente sean incorrectas
  • Use la intersección entre muestras, cree que es incorrecta para estar seguro de las muestras que cree que son incorrectas

Importante tener en cuenta

También quiero tener una sección breve sobre puntos importantes a tener en cuenta al realizar la limpieza de datos

  • Calidad> Cantidad
  • Bucle experimental corto
  • El esfuerzo requerido para mejorar la precisión aumenta exponencialmente

Ahora daré más detalles sobre cada punto.

Calidad> Cantidad

Cuando se trata de datos, es mucho más importante tener un conjunto de datos de anotado correctamente Muestras, en lugar de un conjunto de datos más grande que contiene algunas muestras anotadas incorrectamente. La razón es que cuando entrena el modelo, confía ciegamente en las anotaciones que ha asignado y adaptará los pesos del modelo a esta verdad terrestre.

Imagine, por ejemplo, tiene diez imágenes de perros y gatos. Nueve de las imágenes se anotan correctamente; Sin embargo, una de las muestras muestra una imagen de un perro, mientras que en realidad es un gato. Ahora le está diciendo al modelo que debe actualizar sus pesos para que cuando vea a un perro, debe predecir gato en cambio. Esto naturalmente disminuye fuertemente el rendimiento del modelo, y debe evitarlo a toda costa.

Bucle experimental corto

Cuando se trabaja en proyectos de aprendizaje automático, es importante tener un breve bucle experimental. Esto se debe a que a menudo tiene que probar diferentes configuraciones de hiperparámetros u otras configuraciones similares.

Por ejemplo, al aplicar la tercera técnica que describí anteriormente para predecir el uso de su modelo, y comparar la salida con sus propias anotaciones, le recomiendo que se reanude el modelo a menudo en sus datos limpios. Esto mejorará el rendimiento de su modelo y le permitirá detectar anotaciones incorrectas aún mejor.

El esfuerzo requerido para mejorar la precisión aumenta exponencialmente

Es importante tener en cuenta que cuando trabaja en proyectos de aprendizaje automático, debe tener en cuenta cuáles son los requisitos de antemano. ¿Necesita un modelo con una precisión del 99%, o es suficiente 90%? Si el 90% es suficiente, es probable que pueda ahorrarse mucho tiempo, como puede ver en el gráfico a continuación.

El gráfico es un gráfico de ejemplo que hice y no utiliza ningún datos reales. Sin embargo, destaca una nota importante que he hecho mientras trabajo en modelos de aprendizaje automático. A menudo, puede alcanzar rápidamente una precisión del 90% (o lo que defino como un modelo relativamente bueno. La precisión exacta dependerá, por supuesto, de su proyecto. Sin embargo, llevar esa precisión al 95% o incluso al 99% requerirá exponencialmente más trabajo.

Gráfico que muestra cómo el esfuerzo para aumentar la precisión aumenta exponencialmente hacia el 100% de precisión. Imagen del autor.

Por ejemplo, cuando inicia la limpieza de datos, reactiva y vuelva a probar su modelo, verá mejoras rápidas. Sin embargo, a medida que realiza cada vez más limpieza de datos, lo más probable es que vea devoluciones decrecientes. Tenga esto en cuenta al trabajar en proyectos y priorizar dónde pasar su tiempo.

Conclusión

En este artículo, he discutido la importancia de la anotación de datos y la limpieza de datos. He introducido tres técnicas para aplicar una limpieza de datos efectiva:

  1. Agrupación
  2. Cleanlab
  3. Predecir y comparar

Cada una de estas técnicas puede ayudarlo a detectar muestras de datos que probablemente sean anotadas incorrectamente. Dependiendo de su conjunto de datos, diferentes técnicas diferirán en efectividad, y generalmente tendrá que probarlos para ver qué funciona mejor para usted y el problema en el que está trabajando.

Además, he discutido notas importantes para tener en cuenta al realizar la limpieza de datos. Recuerde que es más importante tener anotaciones de alta calidad que aumentar la cantidad de anotaciones. Si tiene eso en cuenta y asegura un breve bucle experimental, donde limpia algunos datos, vuelve a entrenar su modelo y prueba nuevamente. Verá mejoras rápidas en el rendimiento de su modelo de aprendizaje automático.

👉 Sígueme en sociales:

🧑‍💻 Ponerse en contacto
🌐 Blog personal
🔗 LinkedIn
🐦 X / Twitter
✍️ Medio
🧵 Trapos