Creación de features: un mini-proyecto práctico
Introducción
La creación de características (features) es una parte fundamental del proceso de ingeniería de características. En la práctica, las variables que utilizamos en nuestros modelos no deben ser simplemente los datos brutos provenientes de nuestra base de datos. Es necesario transformar esos datos para extraer la información relevante y útil que estos contienen. Esto puede mejorar significativamente el rendimiento del modelo, ya que se reduce el ruido innecesario y se capturan mejor las relaciones entre las variables.
En este mini-proyecto guiado, aprenderemos a crear nuevas características a partir de los datos brutos proporcionados en un conjunto de datos real. Utilizaremos Python junto con bibliotecas populares como Pandas para manipular los datos y Scikit-learn para la transformación y análisis.
Explicación principal
Paso 1: Análisis del dataset
Comenzamos con el análisis exploratorio del dataset proporcionado. Para este ejemplo, supongamos que estamos trabajando con un conjunto de datos sobre ventas en una tienda minorista. El dataset contiene variables como fecha, hora, precio del producto, y número de productos vendidos.
import pandas as pd
# Cargar el dataset
df = pd.read_csv('venta_dia.csv')
# Ver las primeras filas del dataframe
print(df.head())
Paso 2: Creación de features
Combinaciones de variables
Una estrategia común para crear nuevas características es combinar las existentes. Por ejemplo, podemos calcular el ingreso total en cada venta a partir del precio y la cantidad vendida.
df['ingreso_total'] = df['precio_del_producto'] * df['numero_productos_vendidos']
Ratios
Otra forma de crear nuevas características es formar ratios entre variables. Podemos calcular el ratio entre la cantidad de productos vendidos y la cantidad en inventario.
df['ratio_inventario'] = df['numero_productos_vendidos'] / df['cantidad_en_inventario']
Features de dominio
Las features derivadas que se crean a partir del dominio específico del problema también son valiosas. En este caso, podríamos crear una variable días_desde_última_compra para analizar las tendencias de compra.
df['fecha'] = pd.to_datetime(df['fecha'])
df['dias_desde_ultima_compra'] = (pd.Timestamp('2023-10-01') - df['fecha']).dt.days
Paso 3: Análisis exploratorio orientado a features
A continuación, analizamos las nuevas características creadas para entender mejor cómo afectan el rendimiento del modelo.
import seaborn as sns
import matplotlib.pyplot as plt
# Distribución de ingreso_total
sns.histplot(df['ingreso_total'], bins=50)
plt.show()
# Correlaciones entre variables
corr_matrix = df.corr()
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm')
plt.show()
Errores típicos / trampas
Crear variables sin sentido
Una trampa común es crear nuevas características que no aportan información relevante al modelo. Asegúrate de justificar cada nueva característica que crees.
Usar información futura
Evita usar datos del futuro en tu conjunto de entrenamiento, ya que esto puede llevar a resultados falsamente optimistas y modelos poco generalizables.
Data leakage
El data leakage ocurre cuando se introduce información sobre el resultado en los datos de entrada. Esto influye en la capacidad del modelo para hacer predicciones en nuevos datos sin ese conocimiento.
Checklist accionable
- Análisis exploratorio: Comprueba las distribuciones y correlaciones entre variables.
- Creación de características: Combina, crea ratios y extrae features de dominio basadas en el contexto del problema.
- Validación cruzada: Verifica si la nueva característica mejora el rendimiento del modelo usando validación cruzada.
- Revisión: Asegúrate de que cada nueva característica aporta valor al modelo y no introduce data leakage.
- Documentación: Documenta todas las transformaciones y características creadas para asegurar reproducibilidad.
Siguientes pasos
- Optimización del modelo: Ahora que has creado nuevas características, es hora de optimizar el rendimiento del modelo.
- Validación avanzada: Asegúrate de que tu modelo se generaliza correctamente a nuevos datos usando técnicas avanzadas como validación cruzada estratificada.
- MLOps: Implementa una pipeline robusta para el feature engineering en producción, asegurando la consistencia entre train y test.
Siguiendo estos pasos, podrás crear características efectivas que mejorarán significativamente tu modelo de machine learning.