Yo sigo a lo mío, a mi cursito de Ciencia de Datos de IBM financiado por FUNDAE. Y este capítulo de hoy no va sobre algunos de sus módulos sino sobre la normalización de datos antes de su uso en la construcción de un modelo cualquiera, sea este predictivo o clasificatorio de aprendizaje automático.
Y en Python esto son dos líneas de código partiendo de un DataFrame construido con pandas. Solo tienes que copiar el procedimiento. Lo que no entendía bien era el por qué y el para qué.
Normalizar datos es… lo normal
Normalizar datos significa transformar los valores de las características de un conjunto de datos para que estén en una escala común, típicamente en un rango de 0 a 1 o con una media de 0 y una desviación estándar de 1 (es decir, entre -1 y 1). Esto último es lo que se llama estandarización. Este proceso se realiza antes de entrenar y probar un modelo predictivo por varias razones.
Mejora la convergencia de los algoritmos de optimización
Muchos algoritmos de aprendizaje automático, como la regresión logística, redes neuronales o máquinas de soporte vectorial (SVM), funcionan mejor cuando las características están en una escala similar.
Si las características tienen rangos muy diferentes (por ejemplo, edad en años vs. ingresos en miles), los algoritmos pueden tener dificultades para encontrar patrones óptimos y pueden tardar más en converger.
Es decir, como te habrás dado cuenta, normalizar significa llevar cada columna de datos (cada variable) a una misma escala.
Así de simple. ¡A qué ahora lo pillas!
(Yo sí.)
Evita el sesgo hacia características con mayor magnitud
Modelos como los basados en distancias (SVM, k-Nearest Neighbors, etc.) pueden dar más importancia a las características con valores mayores simplemente porque tienen una escala más amplia.
Esto puede afectar negativamente el rendimiento del modelo porque da un peso sobredimensionado a una variable que podría no tener tanta relevancia y, por lo tanto, aumenta el error o inexactitud del modelo construido.
Mantiene las relaciones entre características intactas
Al normalizar o estandarizar los datos, las relaciones relativas entre las características no cambian, pero las magnitudes absolutas se ajustan, lo que facilita el proceso de aprendizaje.
Es decir, que aunque lleves una variable tipo salario_bruto_anual que puede ir entre 12.000 y 65.000 a una escala de 0 a 1 y una variable edad_actual que sea fruto de la resta de fecha_actual - fecha_nacimiento a una escala proporcional también de 0 a 1, no cambia la relación entre ambas magnitudes, sino que las mantiene.
Diferencias entre normalización y estandarización
Normalización: Ajusta los valores para que estén en un rango específico, generalmente entre 0 y 1.
Estandarización: Ajusta los valores para que tengan una media de 0 y una desviación estándar de 1, donde μ (se pronuncia miu… o mu si eres un maguito de campo como yo) es la media del conjunto y σ (se pronuncia sigma) es la desviación estándar del mismo conjunto de datos.
¿Por qué se hace antes del entrenamiento y test?
Antes que nada, por si no lo sabes, es habitual (y recomendable) dividir tu muestra (si es lo suficientemente grande) en dos trozos de tarta.
Uno sirve para entrenar el modelo, es decir, para realizar los cálculos que se derivan en la formulita predictora (por ejemplo, una regresión lineal simple). A esto lo llamaremos datos de entrenamiento.
El otro, normalmente menor (por ejemplo, el 30% del total de filas), se utiliza para testar el modelo. Es decir, partiendo de tus variables predictoras (las Xs) calculas la variable dependiente (las Ys), para compararlas luego con los valores reales y determinar así la capacidad de tu modelo para predecir valores con datos aún inexistentes o desconocidos.
Si se entrenara el modelo con datos no normalizados, el modelo podría adaptarse a las diferencias de escala en lugar de aprender patrones significativos.
Además, la normalización garantiza que el conjunto de entrenamiento y el conjunto de prueba estén en la misma escala, lo cual es crucial para obtener una evaluación precisa del modelo en datos no vistos.
Porque al dividir tu conjunto de datos en dos muestras eso implica que ambas tengas diferencias en cuanto a sus relaciones de variables. Diferencias que pueden ser significativas, sobre todo si tu modelo está sobreajustado… aunque eso es otra historia.
Baste decir que no quieres un modelo perfecto sino uno genérico que se adapte bien a los datos que aún no se conocen.
En resumen, la normalización es una técnica clave para mejorar la eficiencia y precisión de los modelos predictivos.
Punto.
¿Lo entendiste, mi niño?
Post-data, no confundir con normalización de bases de datos.