Precauciones a la hora de normalizar datos en Data Science

Thursday, November 1, 2018

Precauciones a la hora de normalizar datos en Data Science

Escrito por  Santiago Morante, PhD, Científico de Datos en LUCA

Para que funcionen mejor muchos algoritmos de Machine Learning usados en Data Science, hay que normalizar las variables de entrada al algoritmo. Normalizar significa, en este caso, comprimir o extender los valores de la variable para que estén en un rango definido. Sin embargo, una mala aplicación de la normalización, o una elección descuidada del método de normalización puede arruinar tus datos, y con ello tu análisis. Vamos a ver unos ejemplos de los métodos de normalización más usados actualmente.

Escalado de variables (Feature Scaling o MinMax Scaler)

En este caso, cada entrada se normaliza entre unos límites definidos:


Figura 1: Fórmula normalización.
Figura 1: Fórmula normalización.


El problema de este tipo de normalizacion, es que comprime los datos de entrada entre unos límites empíricos (el máximo y el mínimo de la variable). Esto quiere decir que si existe ruido, éste va a ser ampliado.

Pongamos por ejemplo que queremos analizar la calidad de la fibra óptica de 30 Mb/s de un hogar y para ello medimos durante 50 días su velocidad de conexión.

Figura 2: Velocidad de conexión a lo largo de 50 días.
Figura 2: Velocidad de conexión a lo largo de 50 días.


Parece una conexión bastante estable, ¿verdad?. Vamos a proceder a escalar esta variable en el rango 0-1, usando como maximo y minimo los maximos y minimos de la señal.

Figura 4: Velocidad conexión /día en escala 0-1.
Figura 4: Velocidad conexión /día en escala 0-1.

Después del escalado, nuestros datos se han distorsionado. Lo que era una conexión estable, ahora parece tener muchas variaciones. Esto nos dice que este método de normalización no es adecuado para señales estables.

Escalado estándar (Standard Scaler)

Una alternativa al escalado de variables es usar otra técnica conocida como escalado estándar (a cada dato se le resta la media de la variable y se le divide por la desviación típica).

Figura 5: Fórmula de escalado estándar.
Figura 5: Fórmula de escalado estándar.

Éste método funcionaría para normalizar la señal de la fibra óptica del ejemplo anterior, conservando su forma,  pero, ¿qué pasará con otras señales?. Los dos estadísticos que se usan (media y desviación típica) son muy sensibles a valores anómalos (muy grandes o muy pequeños con respecto al resto).

Imaginemos otro ejemplo. Vamos a medir cuánto se usa la palabra “resaca” en publicaciones de Facebook (datos reales). La frecuencia de uso de esta palabra tiene picos durante el fin de semana y valles entre semana. Los datos tienen valores anormalmente altos en fiestas como Halloween y Navidad.

Figura 6: Número de veces que se usa la palabra "resaca" en Facebook/días.
Figura 6: Número de veces que se usa la palabra "resaca" en Facebook/días.

Antes de normalizar, calculamos la media (5.55) y la desviación típica (10.53). Ya podemos ver que la media está en torno a 5, cuando nuestros datos sin anomalias no pasan de valores en torno al 4 (mala señal).  Si aplicamos ahora la normalización estándar, tenemos lo siguiente.

La normalización estándar para los datos anteriores no es una buena elección.
Figura 7: La normalización estándar para los datos anteriores no es una buena elección.

Lo primero que vemos es que no hemos conseguido normalizar entre 0-1 con este método. Además ahora tenemos valores negativos, cuando antes no los teníamos. Por si esto fuera poco, nuestros valores pico y valle han quedado muy atenuados por culpa de las anomalías. Una solución a esto sería eliminar las anomalías antes de normalizar (tema para otro post).

Análisis similares se puede hacer para otros métodos de normalización: escalar sobre máximo, normalizer, escalado robusto, etc. Puedes consultar una versión extendida de este análisis en este enlace.

Cosas a recordar

La normalización puede (posiblemente [peligrosamente]) distorsionar tus datos
No existe un método ideal de normalización que funcione para todas las formas de variables. Es trabajo del Data Scientist conocer cómo se distribuyen los datos, saber si existen anomalías, comprobar rangos, etc. Con este conocimiento, se puede seleccionar la mejor técnica para no distorsionar los datos.


Para mantenerte al día con LUCA visita nuestra página web, y no olvides seguirnos en TwitterLinkedIn YouTube.

No comments:

Post a Comment