Cuando se trabaja con datos de series temporales, es importante evaluar la calidad del modelo de forma que refleje con precisión las situaciones del mundo real.

Generalmente, el proceso simplificado de construcción de un modelo de Machine Learning es el siguiente:

  1. Procesamiento y limpieza de datos
  2. Entrenamiento del modelo usando tu set de entrenamiento
  3. Evaluacion de su rendimiento con el set de prueba

Esta es la forma en que se hace tradicionalmente en Ciencia de Datos. Sin embargo, cuando se trata de datos de series temporales, existe un mejor enfoque. Este consiste en repetir los dos últimos pasos para considerar toda la información disponible en ese momento.

Usando el método tradicional perderá información importante ya conocida. Un mejor enfoque es usar el método llamado “Pronóstico de ventana móvil”.

Pronóstico de ventana móvil

Este método implica agregar gradualmente un valor del set de prueba al conjunto de entrenamiento a la vez, entrenar un nuevo modelo (en este caso un modelo ARIMA) con el set de entrenamiento actualizado y usar el modelo para predecir el siguiente valor del set de prueba. Este proceso se repite hasta que se haya pronosticado todo el set de prueba.

Por ejemplo, supongamos que está trabajando con datos de ventas diarios y su set de entrenamiento va de 2015 a 2021, y un set de prueba cubre todo el año 2022. Entrenaría su modelo usando el set de entrenamiento y luego agregaría gradualmente un valor del conjunto de prueba en el set de entrenamiento, entrenaria un nuevo modelo en el set de entrenamiento actualizado y usaria el modelo para predecir el número de ventas para el próximo día en 2022.

Se considera que este método proporciona una evaluación más precisa del rendimiento del modelo y le permite ver cómo se comportaría el modelo en situaciones del mundo real. Además, ayuda a considerar toda la información disponible para hacer predicciones.

Python
# Define el orden del modelo y el número de periodos
order = (1,1,1)
steps = 10

# Initializa el vector de predicciones
predictions = []

# Itera por los diferentes periodos
for step in range(steps): 
    
    # Añade los nuevos precios a los anteriores
    prices_train_i = pd.concat((prices_train, prices_test[:step]), axis=0)
    
    # Entrena un nuevo modelo
    model_i = ARIMA(prices_train_i.values, order=order).fit()
    
    # Pronostica el siguiente precio
    pred = model_i.forecast(steps=1)
    
    # Añade el precio al vector de predicciones
    predictions.append(pred)

# Crea un dataframe
df_rolling = pd.DataFrame(predictions, index=prices_test[:steps].index)

Es importante tener en cuenta que hay dos formas diferentes de usar el pronóstico de ventana móvil:

  • Ventana móvil fija o deslizante: se utiliza el mismo tamaño de ventana durante todo el proceso de pronóstico. Por ejemplo, si se usa una ventana fija de tamaño 12, el modelo se entrenará con los primeros 12 valores de datos, luego con los siguientes 12 y así sucesivamente. El modelo se vuelve a entrenar con nuevos datos cada vez que se desliza la ventana. Este método es útil cuando los datos son relativamente estables y los patrones de los datos no cambian significativamente con el tiempo.
Visualizacin de Ventana móvil fija o deslizante
  • Ventana móvil incremental: el tamaño de la ventana aumenta a medida que avanza el proceso de prediccion. Por ejemplo, el modelo se puede entrenar con los primeros 12 valores de datos, luego con los primeros 24, luego con los primeros 36 y así sucesivamente. El modelo se vuelve a entrenar con nuevos datos cada vez que se expande la ventana. Este método es útil cuando los datos evolucionan con el tiempo y los patrones en los datos están cambiando.
Visualización de Ventana móvil incremental

Pronóstico tradicional o multipaso

En cambio, la forma tradicional de pronosticar en Series Temporales, también conocida como pronóstico de varios pasos o multipaso, consiste en entrenar el modelo una vez, con todos los datos disponibles hasta ese momento, y luego pronosticar varios días en el futuro. Sin embargo, este método no tendrá en cuenta datos importantes como la evolución del precio desde el día del entrenamiento hasta el día de hoy.

Python
# Define el orden del modelo y el número de periodos
order = (1,1,1)
steps = 10

# Entrena el modelo ARIMA
model = ARIMA(prices_train.values,
    order=order).fit()

# Ponostica futuros precios
df_traditional = pd.DataFrame(
    model.forecast(steps=steps),
    index=prices_test[:steps].index
)

Comparación de pronósticos

Consideraremos el ejemplo anterior, en el que intentábamos pronosticar el precio de las acciones de Apple.

Podemos ver que la predicción realizada por el método de pronóstico móvil (ventana incremental) está mucho más cerca del precio real que el método de pronóstico tradicional. El tradicional o de varios pasos logra predecir solo el primer período o si el precio no cambia mucho, también el segundo período.

Comparacion de Metodos de Pronostico

En conclusión, es importante conocer las diferentes formas de pronosticar valores futuros en Series Temporales y elegir el método que mejor se adapte al problema en cuestión. El método de pronóstico de ventana móvil es una mejor alternativa al método tradicional, ya que proporciona una evaluación más precisa del rendimiento del modelo y tiene en cuenta toda la información disponible. Sin embargo, requiere que el modelo se vuelva a entrenar constantemente, y esto puede no ser ideal para su aplicación en particular.

¡Inténtalo tú!

Forecasting methods in Time Series | Kaggle
Explore and run machine learning code with Kaggle Notebooks | Using data from No attached data sources
www.kaggle.com

Categories: Series Temporales

0 Comments

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *