Creación de features temporales: Día, mes, hora
Introducción
En el desarrollo de modelos de machine learning, las variables temporales son cruciales para capturar patrones y tendencias que pueden ser fundamentales para la toma de decisiones. En particular, el día, el mes y la hora del evento son features valiosas en diversos escenarios, desde predicciones climáticas hasta análisis de comportamiento de usuarios en aplicaciones web. Estos features pueden ayudar a mejorar significativamente la precisión del modelo al proporcionar información contextual sobre cuándo ocurrieron los eventos.
Explicación principal con ejemplos
Para extraer estas características, puedes utilizar métodos simples pero efectivos para transformar una variable de fecha en múltiples features. En Python, puedes usar el paquete pandas junto con la función .dt, que permite acceder a las partes de una fecha como año, mes, día, hora, etc.
Ejemplo de código
import pandas as pd
# Crear un dataframe con fechas
df = pd.DataFrame({
'fecha_evento': ['2023-10-05 08:00', '2023-10-06 14:30', '2023-10-07 19:15']
})
# Convertir la columna a datetime
df['fecha_evento'] = pd.to_datetime(df['fecha_evento'])
# Extraer día, mes y hora
df['dia_semana'] = df['fecha_evento'].dt.dayofweek
df['mes'] = df['fecha_evento'].dt.month
df['hora'] = df['fecha_evento'].dt.hour
print(df)
En este ejemplo, hemos transformado una columna de fecha en tres features: dia_semana, mes y hora. La función .dayofweek() devuelve el día de la semana (0 es lunes, 6 es domingo), .month() retorna el mes del año y .hour() proporciona la hora exacta.
Errores típicos / trampas
- Usar fechas futuras en los datos de entrenamiento: Es común que las predicciones se realicen en el futuro, por lo que es vital no usar información futura al preparar tus datos para el modelo.
- Olvidar considerar la estacionalidad: Algunas variables temporales pueden tener patrones estacionales (por ejemplo, las ventas de helados pueden aumentar en verano y disminuir en invierno). Ignorar esto puede llevar a modelos inexactos.
- No normalizar adecuadamente las variables: Las características como el día y la hora suelen estar distribuidas de manera no lineal (el 24 de diciembre es diferente al 15 de diciembre en términos de días desde el año). No utilizar técnicas de escalado puede afectar negativamente a los modelos basados en distancias, como las máquinas de vecinos más cercanos.
Checklist accionable
- Verifica la consistencia del formato de fecha: Asegúrate de que todas las fechas estén en el mismo formato y estén correctamente formateadas.
- Convierte las fechas a datetime: Utiliza
pd.to_datetime()para convertir cualquier columna con texto o números que representen fechas. - Extrae las características temporales relevantes: Usa
.dtpara extraer el día de la semana, mes y hora (o minutos, segundos si es necesario). - Normaliza las variables temporales: Asegúrate de normalizar adecuadamente tus features temporales, especialmente si vas a usar modelos que dependen de distancias.
- Considera la estacionalidad: Analiza si hay patrones estacionales en tus datos y ajusta tu modelo según sea necesario.
Siguientes pasos
- Evaluación del impacto: Compara el rendimiento de tus modelos antes y después de incluir las features temporales.
- Integrar en el flujo de trabajo: Automatiza la creación de estas features en tu pipeline de data science para asegurar consistencia y eficiencia.
- Documenta: Mantén un registro detallado de cómo se transforman tus datos, especialmente si trabajas en un equipo grande.
El feature engineering es una habilidad crítica en el desarrollo de modelos de machine learning. La creación efectiva de features temporales como día, mes y hora puede hacer una gran diferencia en la precisión del modelo y en la interpretabilidad de los resultados.