Introducción
Cuando se inicia un nuevo proyecto de ciencia de datos, es común empezar a discutir qué algoritmos y/o técnicas sería bueno utilizar. Nombres o conceptos como Deep Learning, CatBoost, XGBoost, K-Means, Algoritmos de Recomendación comienzan a utilizarse como posibles soluciones al problema planteado.
Sin embargo, lo que no siempre se sabe es que esta es solo la parte final del proyecto, y la que, de media, menos tiempo lleva. Hay un paso que es muy relevante, que lleva más tiempo y que muchos Data Scientists no disfrutan: la limpieza de datos.
Realizar una inspección y limpieza de datos puede marcar la diferencia entre el éxito o el fracaso de un proyecto. El dicho «garbage in, garbage out» es bien conocido en el mundo de la ciencia de datos: un algoritmo, por muy bueno que sea, se entrena con los datos entrantes, y no podrá ofrecer buenos resultados si los datos no son buenos.
Se estima que la limpieza de datos lleva entre el 60% y el 70% del tiempo total de un proyecto[1] Y es comprensible que lleve tanto tiempo: debemos estar seguros de que la limpieza de datos está bien hecha, porque alimentará los algoritmos que utilicemos para resolver el problema que tenemos.
¿En qué consiste «limpiar los datos»? En pocas palabras, consiste en revisar y verificar que todos los datos que tenemos (ya sean números, texto o imágenes) tienen sentido. Si los datos se refieren a la altura, ¿son coherentes las cifras? ¿Están dentro de un rango aceptable? ¿Aparece alguien de 5 m de altura? Si estoy analizando reclamaciones de tiendas de habla hispana, ¿es normal que aparezca texto en otro idioma? Si estoy estudiando gestos en imágenes de personas, ¿pueden aparecer imágenes de animales?
Es importante que los datos con los que vaya a trabajar sean precisos, completos, de buena calidad, fiables, imparciales y válidos.
Proceso limpieza de datos
Dado que cada proyecto es diferente, es difícil tener una lista de comprobación que nos diga qué hacer paso a paso. Sin embargo, hay comprobaciones básicas que son transversales a todo proyecto (nota: a partir de ahora, se presuponen los datos numéricos y las variables que contienen nombres).
- Eliminar los datos duplicados o irrelevantes: Tener datos duplicados es más común de lo que se piensa. Esto suele ocurrir en la fase de recopilación de datos. Cuando se tienen varias fuentes, lo que se busca es juntar los datos, lo que puede dar lugar a tener duplicados. Por lo tanto, es importante que después de recopilar los datos, se revise la tabla con la que se va a trabajar para descartar las filas repetidas. Los datos irrelevantes son aquellos que no influyen o impactan en el problema que se intenta resolver. Por ejemplo, si estás analizando la renta media en países asiáticos y tienes datos de países europeos, lo mejor es eliminar estos últimos. Esto agilizará el análisis y reducirá las posibilidades de error.
- Corregir errores estructurales: Esto ocurre cuando se transfieren datos o se fusionan diferentes bases de datos, y se observan errores extraños de nomenclatura, tipográficos o gramaticales. Por ejemplo, pueden aparecer «N/A» o «No aplicable», que deben normalizarse. O puede que para una persona, «Brain Food», «Brainfood» y «Brain-Food» sean lo mismo, pero el ordenador vea 3 nombres diferentes. Todo esto debe analizarse cuidadosamente para evitar errores.
- Corrección de valores atípicos: Esta es quizás una de las situaciones más comunes con las que se encuentra un Científico de Datos. Un valor atípico es un valor que «escapa» del rango normal de valores de la variable estudiada. En el ejemplo anterior de la altura, una persona que mide 5 m es claramente un valor atípico. Aquí se nos presentan 2 opciones: podemos eliminar este número (esto implicaría eliminar todo el registro), o cambiarlo por, por ejemplo, la media de las alturas. Qué hacer con el valor atípico dependerá del problema en el que estemos trabajando. Una cosa importante: no todos los valores atípicos son realmente atípicos. Uno puede estar revisando las ventas de un supermercado, y vemos una venta que se sale de la media. Inmediatamente, se podría pensar en borrar el registro, pero quizá lo correcto sea analizar el contexto: ¿la venta se produjo en un periodo especial (Navidad, Año Nuevo)? ¿El supermercado vende también a mayoristas? Es muy importante, antes de tomar cualquier decisión, analizar bien el problema y el contexto de los datos.
- Tratamiento de los datos que faltan: Otra situación común con la que se encuentra un Científico de Datos. Los datos que faltan son los que no están en las tablas con las que trabajamos. Existen algunas opciones para tratar los datos que faltan, como por ejemplo
- Eliminar todos los registros que contengan datos faltantes en algún campo: es una buena opción siempre y cuando los registros a eliminar sean mínimos. Si son un porcentaje significativo de los datos (más del 15%, por ejemplo), es mejor considerar otra alternativa.
- Sustituir los datos que faltan por valores basados en otras observaciones: Existen varias técnicas para esto (usando knn o el algoritmo del vecino más cercano, prediciendo datos faltantes, etc.), la más común es reemplazar por el promedio (por ejemplo, si falta la altura de alguien, se puede reemplazar por el promedio de las alturas presentes en los datos), o por la mediana (en caso de que el promedio esté sesgado por algunos valores dentro de los datos).
- Validación: Una vez realizados los pasos anteriores (y cualquier otro paso específico del proyecto), es importante tomarse el tiempo necesario, examinar los datos y responder a preguntas como:
- ¿Tienen sentido los datos?
- ¿Me permiten los datos encontrar relaciones que ayuden a resolver el problema?
- ¿Ayudan los datos a confirmar o refutar las distintas hipótesis planteadas?
Si los datos no se analizan y depuran correctamente, pueden dar lugar a conclusiones falsas o erróneas sobre el problema, lo que a su vez puede conducir a decisiones empresariales incorrectas.
Cierre
En Brain Food conocemos la importancia de los datos, y por ello, para cada proyecto, realizamos un riguroso análisis para comprobar su calidad y la posibilidad que nos dan de encontrar una solución al problema. Estos análisis se realizan mediante algoritmos en Python o R, apoyados en Power Bi para conseguir una buena visualización. Python dispone de librerías que automatizan ciertas tareas y ayudan a visualizar los datos, como pandas-profiling, Sweetviz, D-Tale y Autoviz, mientras que en R encontramos summarytools, explore y dataMaid, entre otras. Estas herramientas nos ayudan a bucear en los datos y encontrar relaciones que nos permitan encontrar la mejor solución al problema.
Bibliografía
[1] https://www.forbes.com/sites/gilpress/2016/03/23/data-preparation-most-time-consuming-least-enjoyable-data-science-task-survey-says/?sh=35bd98ab6f63