Codificación de Variables Cíclicas para Machine Learning
En Data Science y Machine Learning existen variables que poseen una naturaleza cíclica o periódica. Algunos ejemplos comunes son:
- Hora del día.
- Día de la semana.
- Mes del año.
- Estaciones del año.
- Ángulos.
- Direcciones geográficas.
- Fases de producción.
Estas variables presentan una característica particular: después de alcanzar su valor máximo vuelven a comenzar desde el mínimo. Por ejemplo, después de las 23:00 horas llega nuevamente la hora 0, y después de diciembre vuelve enero.
Si estas variables se representan utilizando valores numéricos convencionales, los algoritmos pueden interpretar incorrectamente las distancias entre observaciones. Para resolver este problema se utiliza la Transformación Seno y Coseno, una técnica que convierte variables cíclicas en coordenadas geométricas capaces de preservar correctamente su naturaleza periódica. En documentación moderna de Machine Learning, normalmente encontrarás nombres como:
- Circular Encoding
- Cyclical Encoding
- Cyclical Features
- Cyclical Transformation
- Sine-Cosine Encoding
¿Qué es la Transformación Seno y Coseno?
La Transformación Seno y Coseno es una técnica de ingeniería de características (Feature Engineering) utilizada para representar variables cíclicas mediante funciones trigonométricas.
Su objetivo es:
- Preservar la naturaleza circular de los datos.
- Evitar discontinuidades artificiales.
- Mejorar la representación matemática de variables periódicas.
- Facilitar el aprendizaje de patrones temporales.
En lugar de utilizar una única variable numérica, la transformación genera dos nuevas variables:
- Componente seno.
- Componente coseno.
Estas dos variables representan la posición de una observación sobre una circunferencia unitaria.
¿Por qué es necesaria?
Supongamos una variable que representa la hora del día:
time = [22, 23, 0, 1, 2]Desde una perspectiva humana:
- Las horas 23 y 0 están muy próximas.
- Las horas 22 y 1 también están relativamente cerca.
Sin embargo, para un algoritmo que utiliza los valores originales:
|23 - 0| = 23El modelo interpreta que ambas observaciones están extremadamente alejadas, cuando en realidad son consecutivas. La transformación seno y coseno elimina este problema.

¿Cómo Funciona?
- La variable se proyecta sobre una circunferencia de radio 1.
- Cada observación se convierte en un ángulo.
- Posteriormente se calculan las coordenadas cartesianas correspondientes utilizando las funciones seno y coseno.
La transformación seno se calcula mediante:
$$x_{sen}=\sin\left(\frac{2\pi x}{P}\right)$$
La transformación coseno se calcula mediante:
$$x_{cos}=\cos\left(\frac{2\pi x}{P}\right)$$
Donde:
- x es el valor original.
- P es el período completo de la variable.
- 2π representa una vuelta completa en la circunferencia.
Interpretación del Período
El período depende de la variable que se esté transformando.
| Variable | Período |
|---|---|
| Hora del día | 24 |
| Día de la semana | 7 |
| Mes del año | 12 |
| Minuto de la hora | 60 |
| Segundo | 60 |
| Dirección angular | 360 |
Ejemplo Práctico: Supongamos una variable de horas:
time = [0, 6, 12, 18]Aplicando la transformación:
| Hora | Seno | Coseno |
|---|---|---|
| 0 | 0 | 1 |
| 6 | 1 | 0 |
| 12 | 0 | -1 |
| 18 | -1 | 0 |
Las observaciones quedan representadas como puntos sobre una circunferencia.
De esta forma:
- La hora 23 y la hora 0 quedan próximas.
- La hora 11 y la hora 12 también quedan próximas.
- Se preserva la continuidad natural del ciclo.
Representación Geométrica
La transformación genera coordenadas sobre una circunferencia unitaria. Cada observación queda representada mediante:
(x_cos, x_sen)Esto permite que los algoritmos perciban correctamente las relaciones cíclicas en lugar de una representación lineal:
0 → 1 → 2 → ... → 23se obtiene una representación circular:
0 ↔ 23que refleja mejor la realidad del fenómeno.
Beneficios de la Transformación Seno y Coseno
Entre los principales beneficios destacan:
- Preserva la naturaleza cíclica de los datos.
- Elimina discontinuidades artificiales.
- Mejora la representación matemática de variables temporales.
- Facilita el aprendizaje de patrones periódicos.
- Genera características continuas.
- Mantiene la proximidad entre valores cercanos dentro del ciclo.
- Suele mejorar el rendimiento de numerosos modelos predictivos.
¿Cuándo utilizar la transformación de seno y coseno?
Esta técnica es recomendable cuando se trabaja con:
- Horas del día.
- Días de la semana.
- Meses del año.
- Estaciones.
- Variables temporales periódicas.
- Ángulos.
- Direcciones geográficas.
- Datos de sensores con comportamiento cíclico.
También resulta especialmente útil en problemas de predicción temporal.
Ventajas
- Captura correctamente la periodicidad.
- Evita errores derivados de la codificación numérica simple.
- Es sencilla de implementar.
- Funciona con cualquier variable cíclica.
- Mejora la capacidad predictiva de muchos modelos.
- Compatible con algoritmos lineales y no lineales.
- Produce características continuas y suaves.
Desventajas
- Incrementa el número de variables.
- Genera dos características por cada variable original.
- Puede resultar menos intuitiva para usuarios no técnicos.
- No siempre aporta mejoras en modelos basados en árboles.
- Requiere conocer correctamente el período de la variable.
Limitaciones
Antes de aplicar esta transformación es importante considerar algunas limitaciones:
- Solo tiene sentido para variables verdaderamente cíclicas.
- No debe utilizarse sobre variables categóricas convencionales.
- Una elección incorrecta del período puede introducir errores.
- No elimina ruido ni valores atípicos.
- No corrige problemas de escalado o asimetría.
Por ello debe considerarse una técnica de representación de datos y no una técnica de limpieza o normalización.
Aplicaciones en Data Science y Machine Learning
La transformación seno y coseno se utiliza ampliamente en:
- Predicción de demanda.
- Forecasting de series temporales.
- Predicción meteorológica.
- Sistemas de recomendación.
- Optimización logística.
- Redes neuronales.
- Modelos de consumo energético.
- Análisis de tráfico.
- Internet de las Cosas (IoT).
- Modelos financieros con componentes estacionales.
Es especialmente frecuente en proyectos donde existe estacionalidad o comportamiento periódico.
Implementación en Python
Transformación de Horas del Día
import pandas as pd
import numpy as np
df = pd.DataFrame({
"hora": [0, 6, 12, 18]
})
df["hora_sin"] = np.sin(
2 * np.pi * df["hora"] / 24
)
df["hora_cos"] = np.cos(
2 * np.pi * df["hora"] / 24
)
print(df)
hora hora_sin hora_cos
0 0 0.000000e+00 1.000000e+00
1 6 1.000000e+00 6.123234e-17
2 12 1.224647e-16 -1.000000e+00
3 18 -1.000000e+00 -1.836970e-16Transformación de Meses del Año
import numpy as np
df["mes_sin"] = np.sin(
2 * np.pi * df["mes"] / 12
)
df["mes_cos"] = np.cos(
2 * np.pi * df["mes"] / 12
)
Función Reutilizable
import numpy as np
def cyclical_encoding(
values,
period
):
sin_component = np.sin(
2 * np.pi * values / period
)
cos_component = np.cos(
2 * np.pi * values / period
)
return sin_component, cos_component
Uso en un Pipeline de Scikit-Learn
from sklearn.preprocessing import FunctionTransformer
import numpy as np
sin_transformer = FunctionTransformer(
lambda x: np.sin(
2 * np.pi * x / 24
)
)
cos_transformer = FunctionTransformer(
lambda x: np.cos(
2 * np.pi * x / 24
)
)
Buenas Prácticas
Al aplicar esta transformación es recomendable:
- Verificar que la variable sea realmente cíclica.
- Identificar correctamente el período completo.
- Mantener ambas variables (seno y coseno).
- No eliminar una de las dos componentes.
- Integrar la transformación dentro de un Pipeline.
- Evaluar el impacto sobre el rendimiento del modelo.
Conclusión
La Transformación Seno y Coseno es una técnica fundamental de ingeniería de características utilizada para representar variables cíclicas de forma adecuada. Al convertir una variable periódica en coordenadas sobre una circunferencia unitaria, permite preservar la continuidad natural del ciclo y evita los problemas derivados de las representaciones lineales tradicionales.
Gracias a su simplicidad, fundamento matemático sólido y eficacia práctica, se ha convertido en una de las transformaciones más utilizadas en proyectos de series temporales, forecasting, análisis estacional y Machine Learning aplicado a datos temporales. Su capacidad para capturar correctamente la periodicidad la convierte en una herramienta esencial dentro del conjunto de técnicas modernas de preparación de datos.