Luis Eduardo Pino V, Andrés Eduardo Rico Carrillo
Antes de entrenar cualquiera de los múltiples modelos de machine learning existe un proceso fundamental, este es el Análisis Exploratorio de Datos (EDA).
EDA es un proceso que permite entender la arquitectura de los sets de datos, evaluar sus características con el fin de hacer predicciones y establecer algunas correlaciones iniciales. En este proceso se identifican -entre otros- los tipos de variables y su distribución, la presencia de datos perdidos y extremos (outliers) y se realizan análisis univariados, bivariados y multivariados.
Algunos científicos de datos consideran los siguientes pasos para hacer un buen EDA:
1. Observación panorámica del set de datos: Después de cargar el archivo de datos en cualquiera de los lenguajes de programación (para este caso utilizaremos Python) es importante evaluar su tamaño en filas y columnas, especialmente si es una estructura tabular. En este paso es de utilidad revisar las primeras y las ultimas 10 filas de los datos (este es un ejemplo sobre la base de datos honeyprod de ML repository):

En este caso vemos que la base de datos tiene 785 filas y 8 columnas. Esto da una vista general de que tanta comolejidad e imbalance puede tenerse.
2. Encontrar valores perdidos (missing values o null values): Esto es clave para definir como se gestionarán estos datos y en que variable o variables se encuentran con mayor frecuencia ya que dependiendo del problema a resolver tendrán que ejecutarse diversas técnicas para gestionarlos.

En este caso vemos que las variables Education_Level y Marital_Status tienen una importante cantidad de valores nulos.
3. Categorizar las variables: Es un paso esencial, consiste en visualizar cual es la estructura de variables del set de datos (categóricas, continuas, discretas etc) ya que esto permitirá saber si deben transformarse y a la vez definir cuales gráficas serán de mayor utilidad para la visualización asociada a los análisis uni, bi y multivariados.

En este caso hay 15 columnas numéricas (int64 y float64) y 6 categoricas (objeto)
4. Encontrar la forma del set de datos (shape): Esto significa verificar la distribución de los datos para definir sus tendencias y desviaciones hacia derecha o izquierda.

Para las variables numéricas podemos ver un resumen de la forma mediante el uso de medidas de tendencia central y desviación estandar.
5. Identificar relaciones mediante el uso de graficos correlacionales como el scatter plot. En general esto debe hacerse frente a la variable objetivo o dependiente. Este tema se tratará en visualización de datos.

6. Localizar outliers en el set de datos mediante la visualización de datos o usando medidas de tendencia central, especialmente el rango intercuartil.

En este gráfico de distribuciones (distplot) podemos ver la forma de las variables, en este caso la variable Mileage corresponde a una distribución normal mientras variables como Year tiene una desviación a la izquierda y Price una clara distribución a la derecha. También pueden identificarse valores extremos (outliers) en Power y Seats.
Los grandes beneficios de hacer adecuadamente un EDA son:
a. Organizar los datos,
b. Entender la estructura de la matriz de variables,
c. Identificar relaciones y patrones entre las variables,
d. Elegir los mejores modelos de trabajo.
Uno de los procesos más importantes dentro del EDA es el de visualización de datos. Existen varias librerias en Python que permiten hacerlo, entre ellas estan Matplotlib, Seaborn y Plotly.
Hay unas reglas generales para la visualización de datos:
1. Eje del tiempo. Al aplicar el tiempo en los gráficos, configúrelo en el eje horizontal. El tiempo debe correr de izquierda a derecha. No omita valores (períodos de tiempo), incluso si no hay valores.
2. Valores proporcionales. Los números en un gráfico (que se muestran como barras, áreas u otros elementos medidos físicamente en el gráfico) deben ser directamente proporcionales a las cantidades numéricas presentadas.
3. Relación tinta-datos. Elimine cualquier exceso de detalles, líneas, colores y texto de un gráfico que no agregue valor.
4. Clasificación. Para gráficos de columnas y barras, para permitir una diferenciación/comparación más fácil, ordene sus datos en orden ascendente o descendente por el valor, no alfabéticamente. Esto se aplica también a los gráficos circulares.
5. No se necesita una leyenda si solo tiene una categoría de datos.
6. Etiquetas. Use etiquetas directamente en la línea, columna, barra, pastel, etc., siempre que sea posible, para evitar la búsqueda indirecta.
7. Colores: En cualquier gráfico, no use más de seis o siete colores. Otras recomendaciones:
Para diferenciar el mismo valor en diferentes períodos de tiempo, use el mismo color en una intensidad diferente (de claro a oscuro).
Para categorías distintas, utilice colores diferentes. Los colores más utilizados son el blanco, el negro, el rojo, el verde, el azul y el amarillo.
Conserve la misma paleta de colores o estilo para todos los gráficos de la serie, y los mismos ejes y etiquetas para gráficos similares para que sus gráficos sean coherentes y fáciles de comparar.
Examine cómo se verían sus gráficos cuando se imprimieran en escala de grises. Si no puede identificar las diferencias de color, debe cambiar el tono y la saturación de los colores.
Del siete al diez por ciento de los hombres tienen una deficiencia de color. Tenga esto en cuenta al crear gráficos, asegurándose de que sean legibles para personas daltónicas.
8. Complejidad de datos. No agregue demasiados detalles a un solo gráfico. Si es necesario, divida los datos en dos gráficos, resalte, simplifique los colores o cambie el tipo de gráfico.
Los gráficos recomendados para los tipos de variables son:
1. Cuantitativas / Numéricas
Análisis Univariado
a. displot: visualiza la distribución de la variable (es un histograma)

b. boxplot o violinplot: ayuda a ubicar especialmente los outliers

Análisis Bivariado
a. jointplot, barplot o pairplot

b. Implot: es un scatter plot con la mejor línea de ajuste
Análisis Multivariado
a. Matriz de correlación

b. heatmap

c. pairplot: combina scatter plots e histogramas individuales para todas las variables numéricas

2. Cualitativas / Categóricas
Análisis Univariado
a. countplot: visualiza las distribuciones

Análisis Cuantitativa Vs Cualitativa
a. boxplot o violinplot
b. stripplot o swarmplot
c. barplot
d. pointplot

e. lineplot: ayuda a ver tendencias (variables de tiempo deben ir en el eje X)

f. catplot o factorplot: permite analizar una cuantitativa a traves de 2 categoricas con una de ellas teniendo un mayor numero de categorias.

Es importante hacer un buena visualización de variables ya que ello permite continuar con un mejor preprocesamiento que es la clave para modelos de alto desempeño y generalizables. En nuestras siguientes columnas trataremos sobre el manejo de los outliers y datos perdidos. Los esperamos.