Transformación Seno y Coseno:

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| = 23

El 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.
  • representa una vuelta completa en la circunferencia.

Interpretación del Período

El período depende de la variable que se esté transformando.

VariablePeríodo
Hora del día24
Día de la semana7
Mes del año12
Minuto de la hora60
Segundo60
Dirección angular360

Ejemplo Práctico: Supongamos una variable de horas:

time = [0, 6, 12, 18]

Aplicando la transformación:

HoraSenoCoseno
001
610
120-1
18-10

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:

012...23

se obtiene una representación circular:

023

que 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-16

Transformació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.