En el episodio de hoy de Un podcast ninja sobre Big Data sacamos nuestra faceta más exploradora y hablamos de qué hacer al enfrentarnos por primera vez a un dataset y del análisis exploratorio de datos (EDA) ðŸ§
En el episodio de la semana pasada averiguamos varios sitios de los que podÃamos sacar datos para empezar a hacer nuestros pinitos ninja entrenando modelos de Machine Learning y hoy vamos a ver qué hacer con estos datos o con cualquier conjunto de datos al que nos enfrentemos.
En la mayorÃa de cursos o tutoriales que hay por ahà se pasa por alto esta etapa o se trata muy por encima porque la gente está generalmente ávida de empezar a entrenar sus modelos de aprendizaje automático y luego tunearlos sin sospechar que en la vida real, dedicarle un buen rato a explorar los datos que tenemos nos ahorrará bastantes quebraderos de cabeza.
Es un poco como ir a la montaña, la parte de la ruta en sà es la parte emocionante, la que todo el mundo quiere hacer.
Y luego está la parte de comprobar los mapas, dónde están los refugios, qué rutas alternativas hay, qué tipo de paisajes podemos encontrar si vamos por un camino o por otro, encargarse de las provisiones que van a ser necesarias… esa parte, que da bastante más trabajo, es bastante menos popular.
Peeeero hacer bien la parte de investigación previa a salir de ruta suele salir a cuenta.
¿Que es posible que acertéis a la primera y entrenéis un modelo de Machine Learning sencillo que os dé los resultados que necesitáis en un dataset facilito?
Puede ser.
Especialmente si empezáis por los conjuntos de datos que se pueden encontrar en Kaggle.
Estos datasets serÃan como el montecito pequeño y con senderos para llegar a la cima.
Aunque no os fiéis porque aunque muchos de los datasets de Kaggle están más o menos preparados para poder saltarse la parte de análisis exploratorio de datos y pasar directamente a la parte de entrenar el modelo con alguna posibilidad de éxito hay otros que no.
Yo personalmente os recomiendo que lo hagáis siempre porque entenderéis mejor lo que estáis haciendo y descubriréis cosas bastante interesantes sobre vuestros datos.
O sea que para el caso de estar entrenando modelos de Machine Learning sobre un conjunto de datos la parte de exploración serÃa un primer paso en el flujo de trabajo y para el caso de analistas de datos… pues es fundamental…
Asà es cómo se encuentran los patrones escondidos en los datos.
Entonces lo primero antes de salir a explorar la montaña, o en nuestro caso a explorar el conjunto de datos que tenemos delante, es saber por dónde empezamos a explorar.
¿Empezamos a caminar directamente hacia la cima o rodeamos la base de la montaña para encontrar la mejor ruta?
Pues depende.
Depende de lo que estéis tratando de lograr. Si queréis llegar a la cima, probablemente sea bueno comenzar a escalar pronto. Pero igual también serÃa bueno dedicar un tiempo a buscar la mejor ruta.
Explorar datos es lo mismo.
¿Qué preguntas estáis tratando de responder?
O mejor, ¿qué suposiciones estamos tratando de demostrar que no son correctas?
Ese serÃa el primer paso como siempre que estamos delante de un problema relacionado con datos. Saber qué es lo que queremos conseguir y a qué preguntas estamos intentando dar respuesta.
Parece un poco tonto pero es fundamental.
¿Y luego qué?
Pues el siguiente paso serÃa saber qué tipos de datos tenemos y qué representa cada uno.
Si tenemos datos tipo tabla como si fuera una tabla de excel en filas y columnas puede que en cada columna tengamos:
Aquà lo primero que podemos hacer es separar cada columna o caracterÃstica en cajitas, según el tipo de datos que hay dentro.
Por ejemplo, si nuestro conjunto de datos tiene columnas con los datos personales de gente tipo nombre, apellido, si es hombre o mujer, color favorito, edad, altura, peso, domicilio, DNI...
Tendremos columnas con datos numéricos como la edad, la altura y el peso.
Columnas con categorÃas como el color favorito o el género.
Estas columnas se llaman categorÃas porque representan una opción de entre un número limitado de opciones. De entre todos los colores el favorito será uno, no es como el peso, que es un valor continuo…
Finalmente, es posible que haya algunas columnas que no tenemos muy claro cómo clasificar.
No pasa nada, porque sólo estamos en el primer paso.
Si de entre todos los datos tenemos dudas sobre lo que representa alguna columna tendremos que buscar en la documentación del conjunto de datos, si es que viene con una, buscar en internet o preguntar al experto en el campo en el que estamos trabajando.
Igual estamos explorando un conjunto de datos médicos con valores de parámetros en un análisis de sangre y no sabemos qué significa alguna columna o cuáles son sus valores habituales… Pues tener un médico a mano para preguntar es siempre de gran utilidad.
Y luego hay otro tema a la hora de ver el tipo de datos que hay en cada una de nuestras columnas. Hay algunas que parecen números pero en realidad son categorÃas, vienen disfrazadas.
Por ejemplo, imaginad que una columna nos da la información sobre el número de hermanos de una persona. Pues, este dato es, en principio, un número pero lo podrÃamos tratar como una categorÃa porque hay un número finito de hermanos que se pueden tener.
Podemos agrupar a las personas según su número de hermanos.
Hijos únicos por un lado, luego la gente que tiene 1 hermano o hermana, los que tienen dos y asà hasta llegar a 69, ¿sabÃais que dicen que la mujer que más hijos ha tenido en la historia fue una rusa que se llamaba Valentina Vassilyeva que vivió hace 300 años y tuvo 69?
Eso dicen...
El caso es que a parte de casos especiales como este podemos tratar el número de hermanos como una categorÃa aunque sea un número.
La idea es que si podéis agrupar los datos en vuestra cabeza con bastante facilidad, puede ser que nos convenga tratar esa columna como categorÃa en lugar de como número.
Siempre dependerá del caso particular pero puede serviros como pista.
Después según el tipo de dato que tenga cada columna lo exploraremos y prepararemos de maneras diferentes. Columnas numéricas por un lado y columnas con categorÃas por otro.
¿Y qué hacemos con las que no tenemos claras?
De momento podemos ver si realmente creemos que aportan información para el problema que queremos resolver.
Aunque siempre decimos que más datos ayudan en estos problemas de Big Data si estamos hablando de algo que no tiene nada que ver pues no lo vamos a procesar.
Por ejemplo, si tenemos un dataset con datos personales y financieros de gente porque queremos ver si les prestamos o no dinero, pues igual su nombre de pila no nos dice nada y podemos pasar de esa columna.
El tema es que la primera etapa de análisis exploratorio de datos debe tener el objetivo no solo de plantear más preguntas sobre los datos, sino también de empezar a ver qué información podemos desestimar.
Sin miedo, porque siempre podemos recuperarla más tarde.
El siguiente paso en el análisis exploratorio de un dataset una vez que ya hemos visto que tipos de datos tenemos es ver cuánto de completos están esos datos.
Puede ser que la gente no haya rellenado su edad y entonces no tenemos esa info para muchas de nuestras filas. En los conjuntos de datos que se encuentran en problemas del mundo real es algo de lo más común.
Para evaluar cuál es la situación de nuestro conjunto de datos en cuanto a valores faltantes suele ser bastante útil utilizar visualizaciones.
Hay herramientas especÃficas para eso pero incluso si fuera una tabla excel y marcáis en negro las celdas vacÃas y luego hacéis zoom out podréis ver cuáles son las columnas más problemáticas en este aspecto.
¿Y qué hacemos con todos esos datos que no conocemos?
Pues, de nuevo, depende.
Porque NO hay soluciones únicas para tratar los datos faltantes. Tenemos que estudiar el conjunto de datos y sus columnas especÃficas para determinar qué hacemos con esos datos que no sabemos.
Por ejemplo, si la gente no rellena su edad y no la sabemos podemos poner que tienen -1 años, y sabemos que eso no puede ser o si no ha rellenado si es hombre o mujer podemos poner una categorÃa nueva que diga vacÃo, porque el campo está vacÃo.
Una vez hayamos solucionado el problema de los valores que nos faltan podemos pasar a la siguiente fase.
La de los valores raros, outliers o valores atÃpicos. Como queráis llamarles.
Estos valores hay que tenerlos en cuenta porque podrÃan sesgar los resultados de nuestro análisis de datos, proporcionando una representación engañosa de los datos.
Además, si se los enchufamos como datos de entrenamiento a un modelo de Machine Learning, puede ocurrir que el modelo tienda a intentar ajustar ese valor raro y lleve al sobreajuste u overfitting.
Por otro lado, si los quitamos sin más nos podemos encontrar ante un modelo que sea demasiado generalista.
Si ve algo un poquito fuera de lo que ha visto durante el entrenamiento los resultados serán malos.
Como siempre, es mejor experimentar iterativamente para encontrar la mejor manera de lidiar con los valores atÃpicos.
Estos valores raros pueden ser valores atÃpicos reales o errores que se han colado en nuestro dataset.
¿Recordáis a Valentina Vassilyeva y sus 69 hijos?
Pues eso.
Entonces ¿Cómo encontramos estos valores atÃpicos?
Pues en una primera aproximación podemos representar algunos estadÃsticos de nuestro conjunto de datos.
Saber cuál es el valor más frecuente, cuál es el máximo, cuál el mÃnimo y cuál la media.
Si fuera un dataset con una columna con el número de hijos de cada mujer tendrÃamos que el valor mÃnimo es cero, porque no se pueden tener menos hijos que ninguno a no ser que fuera un error.
Y en ese caso, pues ya habrÃamos detectado que algo está pasando ahÃ.
El valor más frecuente igual es dos hijos. El valor medio es 1,6 y de repente el máximo es Valentina Vassilyeva con 69 hijos.
Pues ya vemos que eso es un valor raro. Si luego de repente nuestro modelo empieza a decirnos que las mujeres tienen 30 hijos pues podemos sospechar que algo hemos hecho mal.
Otra manera es, de nuevo, utilizar visualizaciones.
Las visualizaciones son muy importantes en esta parte de análisis exploratorio de datos porque nos permiten reconocer patrones muy rápidamente.
Para detectar los valores atÃpicos en nuestro dataset lo más eficiente es representar la distribución de valores.
Cuántas mujeres no tienen hijos, cuántas tienen un hijo, cuantas dos, etc...
Y asà vamos explorando cada una de las columnas de nuestro dataset para ir formándonos una idea de lo que tenemos delante.
Este tipo de visualizaciones nos ayudará a representar la dispersión de los diferentes valores de los datos que tenemos.
Y lo que es más importante, nos ayudará a identificar posibles valores atÃpicos.
Si bien los valores atÃpicos no son difÃciles de detectar, a veces es complicado lidiar con ellos.
Como siempre depende del conjunto de datos y del objetivo del proyecto.
Los métodos para manejarlos son en parte similares a los datos faltantes.
PodrÃamos pasar de ellos y desecharlos, reemplazarlos por algún otro valor o simplemente, dejarlos como están y ver cómo afecta.
Asà que resumiendo, cuándo os encontréis ante un nuevo conjunto de datos:
Espero que os guste el episodio.
Si es asÃ, no olvidéis dejar un «Me gusta» y algún comentario al episodio en Ivoox o una valoración de 5 estrellas del podcast en Apple podcasts, en Spotify, en Google podcasts o donde quiera que escuchéis el podcast.
Recordad que si tenéis cualquier duda o pregunta podéis contactar conmigo a través del formulario de contacto o podemos seguir la conversación en Twitter.
Muchas gracias por estar ahà y os espero en el próximo episodio de Un Podcast Ninja sobre Big Data.