Limpieza de datos

Últimamente, los datos se encuentran en el centro de todo gran acontecimiento de cómputo, se hace referencia a ellos en los grandes volúmenes de datos, en la minería de datos, en el aprendizaje automático y su visualización. Todo el mundo está interesado repentinamente en la ciencia de datos, desde los que hacen estadísticas, los desarrolladores de software y los diseñadores gráficos. El hecho de tener hardware barato, mejores herramientas de procesamiento y visualización, y grandes cantidades de datos de libre acceso, significa que ahora podemos descubrir tendencias y hacer predicciones con más precisión y más facilidad que nunca.

 

De lo que casi no sé habla, es que todas estas esperanzas y sueños que son pronosticadas por la ciencia de datos, se basan en datos que en un momento dado estaban “sucios”. Por lo general, antes de que estén listos para ser utilizados en los algoritmos, poderlos visualizar, y ser considerados la materia prima esencial de la ciencia de datos, los datos se tienen que mover, comprimir, limpiar y ser transformados varias veces.

 

Una perspectiva reciente

El “The New York Times” llamó a la limpieza de datos un trabajo de limpieza de conserjería, mencionando que el 80% del tiempo de un científico de datos se usa para hacer este tipo de limpieza. La siguiente figura muestra como a pesar de su importancia, la limpieza de datos no tiene la relevancia que los profesionales otorgan al Big Data, la minería de datos o el aprendizaje automático:

 

Relevancia de los procesos de ciencia de datos

 

Ciertamente, el trabajo de limpieza de datos no es muy atractivo ni interesante, son de esas tareas que debemos hacer lo antes posible en lugar de ignorarlas, y dejar de quejarnos de ellas o darles sobrenombres degradantes.

 

Los procesos de la ciencia de datos

 

¿Cuál es la importancia de la limpieza de datos en el resto del trabajo de la ciencia de datos? Bueno, la respuesta corta es que es una pieza fundamental, y que afecta directamente a los procesos que vienen antes y después de ella.

 

La respuesta más larga se basa en los seis pasos de que se compone la ciencia de datos, como se muestra en la siguiente lista. La limpieza de datos está justo a la mitad, en el paso 3. Sin embargo, en lugar de pensar en estos pasos como una línea, como un marco de trabajo, de inicio – fin, veremos que pasaremos varias veces por ellos a lo largo de un proyecto de una manera iterativa. Esto depende de las necesidades del proyecto en particular.

Procesos de ciencia de datos
  1. El primer paso es entender el enunciado del problema. Identificar cuál es el problema que se está tratando de resolver.
  2. El siguiente paso es la recolección y almacenamiento de datos. ¿De dónde proceden los datos que ayudarán a resolver el problema? ¿Dónde se almacenan y en qué formato?
  3. Entonces viene la limpieza de datos. ¿Hizo algún cambio en los datos? ¿Se ha borrado algo? ¿Cómo se prepararon para el análisis y la minería de datos?
  4. El siguiente paso es el análisis de datos y el aprendizaje automático. ¿qué tipos de procesamientos se hicieron a los datos? ¿Qué transformaciones? ¿Cuáles algoritmos se usaron? ¿Qué formulas se aplicaron? ¿Cuáles algoritmos de aprendizaje automático se utilizaron? ¿En qué orden?
  5. Lo que sigue es la representación y visualización. ¿Cómo se muestran los resultados del trabajo realizado? ¿Son una o más tablas, gráficas, diagramas de red, nube de palabras, etc.? ¿Es la mejor visualización para representar los datos? ¿Cuáles alternativas se consideraron?
  6. El último paso es la resolución del problema. ¿Cuál es la respuesta al problema o pregunta que se plateo en el paso 1? ¿Cuáles limitaciones tiene sobre sus resultados? ¿Hubo partes del problema que no se podían responder con este método? ¿Qué se pudo haber hecho de otra forma? ¿Cuáles son los pasos a seguir?

 

De lo anterior, tiene sentido que la limpieza de los datos se debe hacer antes de intentar el análisis, minería, aprendizaje automático o la visualización. Aunque, debemos recordar que esto es un proceso iterativo, por lo que posiblemente se tendrá que volver a limpiar los datos varias veces durante el curso de un proyecto. Por otro lado, el tipo de minería y análisis seleccionado a menudo nos indicará la manera de limpiar los datos. La limpieza de datos incluye una variedad de tareas que son establecidas por el método de análisis elegido, por ejemplo, el intercambio de formatos de archivos, el cambio de codificación de caracteres o el análisis de parte de los datos.

La limpieza de los datos también está muy ligada al paso 2 recolección y almacenamiento de datos. Esto significa que tal vez tenga que recolectar los datos en bruto, almacenarlos, limpiarlos, almacenarlos, limpiarlos y almacenar los datos limpiados, recolectar un poco más de datos, que se limpian y se combinan con los datos anteriores, limpiar de nuevo y almacenarlos, así sucesivamente. Por lo que es muy importante recordar lo que se hizo y ser capaz de repetir el proceso de nuevo si es necesario o decirle a otra persona lo que se hizo.

En el ecosistema de Hadoop se cuentan con herramientas que pueden extraer datos de las diversas fuentes de datos de una corporación.

Es posible realizar transformaciones en tiempo de ejecución, aunque en procesos más elaborados es recomendable transformar los datos después de que los datos son almacenados en Hadoop. Programación y scripts permiten realizar procesos complejos del ETL al ser desplegados y ejecutados en una manera distribuida.

 

Propuesta (pasos para desplegar un ETL en Hadoop)

 

1. Configurar el clúster de Hadoop.

2. Conectar las fuentes de datos.

3. Definir los metadatos.

4. Crear los jobs del ETL.

5. Crear el flujo de trabajo de los jobs.

 

1. Configurar el clúster de Hadoop.

Este paso puede ser tan sencillo o difícil dependiendo de lo que se requiera en el clúster.

 

2. Conectar las fuentes de datos.

El ecosistema de Hadoop con Hortonworks incluye las herramientas básicas como Apache Sqoop, Apache Flume, Apache Kafka para conectar las diferentes fuentes de datos. De acuerdo a la cantidad de datos y a la taza de generación de datos, se debe planear la arquitectura y topología. Se debe iniciar con cantidades pequeñas de datos como en cualquier proyecto de desarrollo. El objetivo es mover los datos hacia Hadoop a la frecuencia que necesita el negocio.

 

3. Definir los metadatos.

Hadoop es una plataforma “schema-on-read” y no hay necesidad de crear un esquema de forma anticipada a la carga de los datos como los RDBM tradicionales. Lo anterior no significa que se pueda almacenar cualquier tipo de información y esperar a que Hadoop resuelva los problemas de consultas. Es muy importante definir claramente la semántica y la estructura de los datos (los metadatos) que se utilizarán para la parte analítica. Estas definiciones ayudaran en el siguiente paso de la transformación.

 

Muchos proyectos de Hadoop inician sin una definición clara de los metadatos, pero en realidad los metadatos son cruciales para que Hadoop sea exitoso como Data Warehouse

 

4. Crear los jobs del ETL.

En este paso también existen herramientas en el ecosistema de Hortonwork que permiten realizar la limpieza y transformaciones, por ejemplo, MapReduce, Pig, Spark. La selección de cual herramienta utilizar y como crear los job del ETL dependen de los data sets y de cuales transformaciones se necesitan, incluso se pueden utilizar algoritmos de corrección tipográfica, búsqueda fonéticas e inteligencia artificial para la limpieza y transformación de datos.

 

5. Crear los flujos de trabajo de los jobs.

La limpieza y las transformaciones de datos se realizan de manera más sencilla cuando múltiples jobs de ETL se ejecutan en cascada en flujos de trabajo (workflow). A menudo limpieza y transformaciones deben ejecutarse en un orden dado con verificación de dependencias. Esas secuencias y dependencias son manejadas en flujos de trabajo y pueden ejecutarse semanalmente, diariamente e incluso en “near real streaming”. Herramientas como Oozie y Spark Notebook pueden utilizarse para este fin.

 

Bibliografía

Squire, M. (2015). Clean Data. Packt.