Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Modelos de regresión, Unidad 9 — Feature engineering para regresión, 9.2 — Escalado y normalización ·

Por qué escalar

Por qué escalar: La importancia de la normalización en modelos de regresión

Introducción

La escalabilidad es un paso crucial en el preprocesamiento de datos antes de entrenar cualquier modelo de machine learning, incluyendo modelos de regresión. Los algoritmos basados en distancias o gradientes pueden verse afectados significativamente por la escala de las variables. En este artículo, exploraremos por qué es importante escalar los datos y cómo hacerlo correctamente para mejorar el rendimiento y la precisión de nuestros modelos.

Explicación principal con ejemplos

La escalabilidad se refiere a transformar los valores de las características (variables independientes) en un rango común. Por ejemplo, si tenemos dos variables X1 y X2, donde X1 está en el rango de 0 a 100 y X2 está en el rango de 0 a 1000, el algoritmo puede dar más peso a la variable con mayor escala. Esto se debe a que los algoritmos de regresión lineal y otros modelos basados en distancias utilizan la distancia euclidiana o una variante para calcular la proximidad entre puntos.

Vamos a ver un ejemplo simple usando el modelo de regresión lineal:

import numpy as np
from sklearn.linear_model import LinearRegression

# Datos sin escalar
X = np.array([[100, 2], [50, 3], [75, 4]])
y = np.array([1.2, 1.8, 2.1])

# Entrenamiento del modelo
model = LinearRegression()
model.fit(X, y)

print("Peso de X1:", model.coef_[0])
print("Peso de X2:", model.coef_[1])

En este ejemplo, X1 tiene un peso mucho más alto que X2, incluso cuando la escala de ambos es similar. Ahora, veamos lo que ocurre con el mismo modelo después de normalizar los datos:

# Datos escalados (normalizados a [0, 1])
from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()
X_scaled = scaler.fit_transform(X)

model.fit(X_scaled, y)

print("Peso de X1:", model.coef_[0])
print("Peso de X2:", model.coef_[1])

Con la normalización aplicada, ambos pesos son más equilibrados, lo que puede mejorar significativamente el rendimiento del modelo.

Errores típicos / trampas

  1. Escalando solo algunas características: Es importante escalar todas las características de entrada, no solo algunas. Escalar solo una parte de las características puede dar lugar a resultados sesgados.
  1. Usar el mismo scaler para entrenamiento y prueba: Si se utiliza un StandardScaler o MinMaxScaler, asegúrate de que los parámetros del escalador (como la media y desviación estándar) estén basados en los datos de entrenamiento, no en los datos de prueba. La práctica ideal es crear el scaler con los datos de entrenamiento y aplicarlo a ambos conjuntos.
  1. Ignorar problemas de correlación: A veces, escalando las variables, puede ocultar posibles problemas de correlación entre ellas. Si dos características están altamente correlacionadas, la normalización puede hacer que parezcan más diferentes.

Checklist accionable

  1. Elegir el scaler adecuado: Utiliza StandardScaler para datos normales y MinMaxScaler cuando necesitas rango específico.
  2. Aplicar el escalador a todo el conjunto de datos durante la fase de prueba (no solo al conjunto de entrenamiento).
  3. Usa diferentes scalers para características categóricas: Si tienes características categóricas, considera usar métodos como One-Hot Encoding.
  4. Valida y valida tus modelos: Asegúrate de validar los modelos tanto en la fase de entrenamiento como durante el proceso de prueba.
  5. Monitorea el rendimiento del modelo: Verifica regularmente que el rendimiento del modelo no esté siendo afectado negativamente por la escala.

Cierre con "Siguientes pasos"

Siguientes pasos

  1. Aprende a normalizar datos en diferentes frameworks: Familiarízate con las funciones de escalado disponibles en diferentes bibliotecas como scikit-learn, TensorFlow y PyTorch.
  2. Probar con diferentes métodos de escalado: Experimenta con StandardScaler, MinMaxScaler, y otros métodos como RobustScaler para ver cómo afectan a tus modelos.
  3. Integra el escalado en pipelines automatizados: Considera usar Pipeline o ColumnTransformer en scikit-learn para automatizar el proceso de preprocesamiento.

La escala de los datos es un aspecto crucial pero a menudo subestimado del preprocesamiento de datos. Al comprender y aplicar correctamente la escalabilidad, podrás mejorar significativamente la precisión y el rendimiento de tus modelos de regresión y otros algoritmos de machine learning.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).