Conjuntos de datos que comprenden las mejores prácticas

13

Soy un estudiante de maestría de CS en minería de datos. Mi supervisor me dijo una vez que antes de ejecutar cualquier clasificador o hacer algo con un conjunto de datos, debo entender completamente los datos y asegurarme de que estén limpios y correctos.

Mis preguntas:

  • ¿Cuáles son las mejores prácticas para comprender un conjunto de datos (de alta dimensión con atributos numéricos y nominales)?

  • ¿Prácticas para asegurarse de que el conjunto de datos esté limpio?

  • ¿Prácticas para asegurarse de que el conjunto de datos no tenga valores incorrectos?

Jack Twain
fuente

Respuestas:

8

Hay cosas básicas que puede hacer con cualquier conjunto de datos:

  1. Valide los valores (tolerancia de longitud de cadena, tipo de datos, máscaras de formato, presencia de campo requerida, etc.)
  2. Corrección de rango (¿Estos datos aparentemente correctos caen dentro de los rangos de valores esperados)
  3. Procesamiento preliminar (si intento analizar estos datos, ¿puedo realizar lo básico sin encontrar errores?)
  4. Informes preliminares (ejecute un informe en un conjunto de datos y asegúrese de que pase una prueba de cordura)
  5. Definir nulo frente a vacío frente a cero frente a falso para cualquier columna de datos
  6. Identificar datos que están fuera de lugar (valores numéricos dramáticamente diferentes a otros valores en un conjunto de datos, valores de cadena que parecen estar mal escritos, etc.)
  7. Eliminar o corregir datos obviamente erróneos

Comprender los datos para identificar errores es un juego de pelota completamente diferente, y es muy importante.

Por ejemplo, puede tener una regla que diga que un número de serie debe estar presente en un conjunto de datos dado y ese número de serie debe ser alfanumérico con una longitud máxima de cadena de 255 y una longitud mínima de cadena de 5.

Al observar los datos, puede encontrar una lectura de valor de número de serie en particular. "PLEASE ENTER SERIAL" Es perfectamente válido, pero incorrecto.

Eso es bastante obvio, pero digamos que está procesando datos de existencias y tenía un rango de precios para 1000 acciones que estaba por debajo de un dólar. Mucha gente no sabría que un precio de acciones tan bajo no es válido en ciertos intercambios y es perfectamente válido en otros. Necesita conocer sus datos para comprender si lo que está viendo es problemático o no.

En el mundo real, no siempre puede darse el lujo de comprender sus datos íntimamente.

La forma en que evito problemas es aprovechando a las personas que me rodean. Para conjuntos de datos pequeños, puedo pedirle a alguien que revise los datos en su totalidad. Para los grandes, es más apropiado extraer un conjunto de muestras aleatorias y pedirle a alguien que haga una verificación de la cordura de los datos.

Además, es imperativo cuestionar la fuente de los datos y qué tan bien se puede confiar en esa fuente de datos. A menudo tengo múltiples fuentes de datos en conflicto y creamos reglas para determinar la "fuente de la verdad". A veces, un conjunto de datos tiene excelentes datos en un aspecto dado, pero otros conjuntos de datos son más fuertes en otras áreas.

Los datos introducidos manualmente suelen ser los más escépticos, pero en algunos casos son más fuertes que cualquier cosa que se pueda adquirir a través de la automatización.

Steve Kallestad
fuente
5

Me gusta mucho la respuesta de @Kallestad, pero me gustaría agregar un metapaso: asegúrese de comprender cómo se recopilaron los datos y qué tipos de restricciones existen. Creo que es muy común pensar que no hubo pasos no obvios cuando se recopilaron los datos, pero este no es el caso: la mayoría de las veces, algún proceso o indivudal hizo algo con los datos, y estos pasos pueden y serán influir en la forma de los datos.

Dos ejemplos: recientemente tuve un estudio donde los datos fueron recopilados por varios contratistas de todo el mundo. No estaba en la sesión informativa, así que eso fue opaco para mí. Desafortunadamente, las mediciones se desvanecieron en algunas partes de Francia: a la gente le gustaba el hielo, pero esperábamos una distribución aleatoria. No había una razón obvia para esta uniformidad, así que comencé a buscar los errores. Cuando pregunté a los contratistas, uno había entendido mal la sesión informativa y había seleccionado solo amantes de los helados de su base de datos.

El segundo error fue más desafiante: al hacer un análisis geográfico, descubrí que muchas personas tenían patrones de movimiento extremadamente grandes, lo que sugiere que muchos de ellos viajaron de Munich a Hamburgo en minutos. Cuando hablé con gente corriente arriba, encontraron un error sutil en su software de agregación de datos, que antes no se notaba.

Conclusiones:

  • No asuma que sus datos fueron recopilados por procesos perfectos / humanos.
  • Intente comprender los límites de sus proveedores de datos.
  • Observe los patrones / valores individuales e intente determinar si son lógicos (fáciles de mover / datos geográficos)
Christian Sauer
fuente
4

Normalmente tomo un enfoque de dos pasos

  1. calcule estadísticas de resumen univariadas (variable por variable) como la media, el rango, la varianza, el número de faltantes, la cardinalidad, etc. para cada variable y busque rarezas (por ejemplo, rango no plausible dado el significado de la variable). Trace histogramas para esas variables impares.

  2. divida los datos en subconjuntos manejables (elija una variable significativa y divida los datos de acuerdo con ellos, por ejemplo, todos los ejemplos positivos y todos los negativos) y explore visualmente (por ejemplo, con ggobi ). Especialmente use herramientas como pinceles y diagramas de dispersión para comprender cómo se vinculan las variables.

Y cuando comience a construir modelos, asegúrese de trazar los residuos, buscando errores extremos que puedan deberse a un valor atípico, o mire la matriz de confusión y asegúrese de que esté equilibrada. Utilice la validación cruzada de k-fold para optimizar sus modelos y observe la variación del error de entrenamiento para cada fold, si un fold tiene un rendimiento mucho peor que los demás, puede contener valores atípicos.

damienfrancois
fuente
4

A continuación, puede encontrar una copia de mi respuesta a una pregunta relacionada (sin embargo, centrada en el aspecto de limpieza de datos) aquí en Data Science StackExchange ( /datascience//a/722/2452 ), proporcionada en su totalidad para conveniencia de los lectores. Creo que también responde parcialmente a su pregunta y espero que sea útil. Si bien la respuesta se centra en el Recosistema, se pueden encontrar paquetes y / o bibliotecas similares para otros entornos de análisis de datos . Además, si bien los dos documentos citados sobre preparación de datos también contienen ejemplos en R, estos documentos presentan un flujo de trabajo general (marco) y las mejores prácticas que son aplicables a cualquier entorno de análisis de datos.

R contiene algunos estándar funciones para la manipulación de datos, que pueden ser utilizados para la limpieza de datos, en su base de paquete ( gsub, transform, etc.), así como en varios paquetes de terceros, tales como stringr , reshape , reshape2 , y plyr . En el siguiente documento se describen ejemplos y mejores prácticas de uso de estos paquetes y sus funciones: http://vita.had.co.nz/papers/tidy-data.pdf .

Además, R ofrece algunos paquetes específicamente enfocados en la limpieza y transformación de datos:

Un enfoque integral y coherente para datos de limpieza en R, incluyendo ejemplos y el uso de editrules y deducorrect paquetes, así como una descripción de flujo de trabajo ( marco ) de los datos de limpieza en R, se presenta en el siguiente documento, que recomiendo encarecidamente: http : //cran.r-project.org/doc/contrib/de_Jonge+van_der_Loo-Introduction_to_data_cleaning_with_R.pdf .

Aleksandr Blekh
fuente
1

Agregaré una cosa: si es posible, haga una verificación de razonabilidad comparando sus datos con alguna otra fuente. Parece que cada vez que no puedo hacer esto, me quemo :(

JenSCDC
fuente