Casos prácticos de escalado y normalización
Introducción
El escalado y la normalización son procesos fundamentales en la preparación de datos para modelos de regresión. Estos pasos ayudan a mejorar la precisión y el rendimiento del modelo, al igual que reducir el tiempo de entrenamiento. Sin embargo, si no se aplican correctamente, pueden resultar en malas predicciones o incluso fallos en el modelo. En este artículo, exploraremos casos prácticos donde el escalado y la normalización son cruciales para obtener buenos resultados.
Explicación principal con ejemplos
Caso de estudio: Regresión lineal simple
Supongamos que estamos trabajando en un proyecto de regresión lineal simple donde predecimos el precio de una casa basándonos en su tamaño en metros cuadrados. Los datos originales están distribuidos así:
import pandas as pd
from sklearn.datasets import make_regression
# Generar datos ficticios
X, y = make_regression(n_samples=100, n_features=1, noise=0.1)
df = pd.DataFrame(X, columns=['Tamaño'])
df['Precio'] = y
print(df.head())
El DataFrame df muestra que el tamaño de las casas varía desde unos pocos metros cuadrados hasta cientos o incluso miles.
Importancia del escalado
Si no aplicamos ningún tipo de escalado, los valores más grandes tendrán un impacto mucho mayor en la regresión lineal. Para ilustrar esto, probemos con y sin escalado:
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt
# Sin escalado
model_no_scale = LinearRegression()
model_no_scale.fit(df[['Tamaño']], df['Precio'])
predictions_no_scale = model_no_scale.predict(df[['Tamaño']])
# Con escalado
scaler = StandardScaler()
df_scaled = pd.DataFrame(scaler.fit_transform(df), columns=df.columns)
model_scaled = LinearRegression()
model_scaled.fit(df_scaled[['Tamaño']], df_scaled['Precio'])
predictions_scaled = model_scaled.predict(df_scaled[['Tamaño']])
plt.figure(figsize=(10, 5))
plt.scatter(df['Tamaño'], df['Precio'], label='Datos originales')
plt.plot(df['Tamaño'], predictions_no_scale, color='red', label='Sin escalado')
plt.plot(df['Tamaño'], predictions_scaled, color='blue', label='Con escalado')
plt.xlabel('Tamaño (m²)')
plt.ylabel('Precio ($)')
plt.legend()
plt.show()
Errores típicos / trampas
- Ignorar la normalización de variables categóricas: A menudo se olvida que las variables categóricas también deben ser transformadas antes del escalado.
- Aplicar el mismo escalador a datos de entrenamiento y prueba sin cuidado: Si se ajusta un escalador en los datos de entrenamiento, debe aplicarse exactamente lo mismo en los datos de prueba para mantener la consistencia.
- No considerar la correlación entre variables explicativas: Las variables que están fuertemente correlacionadas pueden llevar a errores en el modelo.
Checklist accionable
- Revisar y preparar tus variables categóricas: Asegúrate de codificar correctamente las variables categóricas antes del escalado.
- Elegir el método correcto de escalado: Para datos Gaussianos, utiliza
StandardScaler. Para datos con rango conocido, considera usarMinMaxScaler. - Aplicar el mismo escalador a datos de entrenamiento y prueba: Esto es crucial para evitar optimismo en la evaluación del modelo.
- Verificar la correlación entre variables explicativas: Si dos variables están altamente correlacionadas, puede haber multicolinealidad que debes manejar adecuadamente.
- Normalizar antes del escalado: En algunos casos, es beneficioso normalizar los datos primero para asegurar que estén en una escala similar.
Cierre
Siguientes pasos
- Explorar más sobre el escalado y la normalización: Aprende a aplicar diferentes métodos de escalado y cuándo son apropiados.
- Practicar con nuevos conjuntos de datos: Aplica lo aprendido en diferentes problemas para mejorar tus habilidades.
- Leer documentación oficial y foros de desarrollo: Estos recursos proporcionan información valiosa sobre mejores prácticas y soluciones a errores comunes.
Asegúrate de implementar estos pasos correctamente, y notarás una mejora significativa en la precisión y el rendimiento de tus modelos de regresión.