Blogs

Precauciones a la hora de normalizar datos en Data Science
  • Santiago Morante
  • 3705 Views
  • 2 Comments
  • No tags

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:

Blog 1

El problema de este tipo de normalization, 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.

Blog 2

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.

Blog 3

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).

Blog 4

É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.

Blog 5

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:

Blog 6

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 analisis en: https://github.com/smorante/machine-learning-knowledge-pills/blob/master/warnings%20about%20normalizing%20data.ipynb

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.

 

Santiago Morante, PhD

Data Scientist en Synergic Partners

 

Data Scientist at @synergicpartner | PhD in Robotics/Machine Learning. Follow me on Twitter (@santimorante) or Github (smorante)

2 COMENTARIOS
  1. Lucia
    16 16UTC junio 16UTC 2017 Responder

    Estimado, estoy haciendo un análisis discriminante, para esta técnica se suele Estandarizar o normalizar los datos (restando media y dividiendo entre el desvío estándar)
    Sin embargo una de las variables a incorporar es la proporción de urbanización considerando distintas ciudades del mundo, y por tanto distintos denominadores, yo entiendo que en ese caso estandarizar es incorrecto. Estoy en lo cierto???

    ejemplo

    pais proporción de contaminación

    Argentia (45/300)
    Italia (90/250)
    Chipre (70/180)

    Leí su trabajo “Precauciones a la hora de normalizar datos en Data Science” y por eso lo estoy consultando.

    Desde ya mil gracias.

    Cordiales saludos Lucia

  2. Santiago Morante
    20 20UTC junio 20UTC 2017 Responder

    Hola Lucia,

    Muchas gracias por tu interés en el artículo.

    En el caso que mencionas, la variable ya está, en si misma, normalizada, ya que representa una proporción (un porcentaje). Esa columna en principio no haría falta normalizarla para los análisis.

    Sin embargo, cabe recordar, que si quieres hacer una análisis junto con otras variables, éstas tienen que poder compararse, teniendo rango parecidos. Por ejemplo, si quieres comparar la proporción de contaminación (que se mide entre 0 y 1), con el número de coches que circulan por la carretera más cercana por hora (que puede ser del orden de miles), tendrás que transformar la variable “número de coches” para que se mida en un rango parecido a “proporción de contaminación”.

    Saludos

DEJA TU COMENTARIO

Clientes destacados