Cómo configurar la red de perceptrones multicapa para el pronóstico de series de tiempo

Cómo configurar la red de perceptrones multicapa para el pronóstico de series de tiempo

Puede resultar difícil al iniciar un nuevo proyecto de modelado predictivo con redes neuronales.

Hay mucho que configurar y no hay una idea clara de por dónde empezar.

Es importante ser sistemático. Puede romper las suposiciones erróneas y afinar rápidamente las configuraciones que funcionan y las áreas para una mayor investigación que probablemente den sus frutos.

En este tutorial, descubrirá cómo utilizar la configuración exploratoria de redes neuronales de perceptrón multicapa (MLP) para encontrar buenos modelos de primer corte para el pronóstico de series de tiempo.

Después de completar este tutorial, sabrá:

  • Cómo diseñar un arnés de prueba experimental robusto para evaluar modelos MLP para el pronóstico de series de tiempo.
  • Diseños experimentales sistemáticos para diferentes épocas, neuronas y configuraciones de retardo.
  • Cómo interpretar los resultados y utilizar los diagnósticos para obtener más información sobre los modelos de buen rendimiento.

Pon en marcha tu proyecto con mi nuevo libro Deep Learning for Time Series Forecasting, que incluye tutoriales paso a paso y el Código fuente de Python archivos para todos los ejemplos.

Empecemos.

  • Actualizado Jul / 2017: Función modificada para crear modelos para que sean más descriptivos.
  • Actualizado Abr / 2019: Se actualizó el enlace al conjunto de datos.

Configuración exploratoria de una red de perceptrones multicapa para el pronóstico de series de tiempo

Configuración exploratoria de una red de perceptrones multicapa para el pronóstico de series de tiempo
Foto de Lachlan Donald, algunos derechos reservados.

Descripción general del tutorial

Este tutorial se divide en 6 partes. Son:

  1. Conjunto de datos de ventas de champú
  2. Arnés de prueba experimental
  3. Variar épocas de entrenamiento
  4. Variar las neuronas de la capa oculta
  5. Variar las neuronas de la capa oculta con retraso
  6. Revisión de resultados

Ambiente

Este tutorial asume que tiene un entorno Python SciPy instalado. Puede usar Python 2 o 3 con este ejemplo.

Este tutorial asume que tienes Keras v2.0 o superior instalado con el backend de TensorFlow o Theano.

Este tutorial también asume que tiene instalados scikit-learn, Pandas, NumPy y Matplotlib.

A continuación, echemos un vistazo a un problema de pronóstico de series de tiempo estándar que podemos usar como contexto para este experimento.

Si necesita ayuda para configurar su entorno Python, consulte esta publicación:

Conjunto de datos de ventas de champú

Este conjunto de datos describe el número mensual de ventas de champú durante un período de 3 años.

Las unidades son un recuento de ventas y hay 36 observaciones. El conjunto de datos original se atribuye a Makridakis, Wheelwright y Hyndman (1998).

El siguiente ejemplo carga y crea un gráfico del conjunto de datos cargado.

Al ejecutar el ejemplo, se carga el conjunto de datos como una serie Pandas e imprime las primeras 5 filas.

A continuación, se crea un gráfico de líneas de la serie que muestra una clara tendencia creciente.

Gráfico de línea del conjunto de datos de ventas de champú

Gráfico de línea del conjunto de datos de ventas de champú

A continuación, veremos la configuración del modelo y el arnés de prueba utilizado en el experimento.

Arnés de prueba experimental

Esta sección describe el arnés de prueba utilizado en este tutorial.

División de datos

Dividiremos el conjunto de datos de Shampoo Sales en dos partes: una formación y un conjunto de prueba.

Los primeros dos años de datos se tomarán para el conjunto de datos de entrenamiento y el año restante de datos se utilizará para el conjunto de prueba.

Los modelos se desarrollarán utilizando el conjunto de datos de entrenamiento y harán predicciones sobre el conjunto de datos de prueba.

El pronóstico de persistencia (pronóstico ingenuo) en el conjunto de datos de prueba logra un error de 136.761 ventas de champú mensuales. Esto proporciona un límite inferior aceptable de rendimiento en el equipo de prueba.

Evaluación del modelo

Se utilizará un escenario de pronóstico continuo, también llamado validación del modelo de avance.

Cada paso de tiempo del conjunto de datos de prueba se recorrerá uno a la vez. Se utilizará un modelo para hacer un pronóstico para el paso de tiempo, luego se tomará el valor esperado real del conjunto de prueba y se pondrá a disposición del modelo para el pronóstico en el próximo paso de tiempo.

Esto imita un escenario del mundo real en el que las nuevas observaciones de ventas de champú estarían disponibles cada mes y se utilizarían en el pronóstico del mes siguiente.

Esto será simulado por la estructura del tren y los conjuntos de datos de prueba.

Se recopilarán todos los pronósticos del conjunto de datos de prueba y se calculará una puntuación de error para resumir la habilidad del modelo. Se utilizará el error cuadrático medio (RMSE), ya que castiga los errores grandes y da como resultado una puntuación en las mismas unidades que los datos de pronóstico, es decir, las ventas mensuales de champú.

Preparación de datos

Antes de que podamos ajustar un modelo MLP al conjunto de datos, debemos transformar los datos.

Las siguientes tres transformaciones de datos se realizan en el conjunto de datos antes de ajustar un modelo y hacer un pronóstico.

  1. Transforme los datos de la serie temporal para que sean estacionarios. Específicamente, una diferenciación de retraso = 1 para eliminar la tendencia creciente en los datos.
  2. Transformar la serie temporal en un problema de aprendizaje supervisado. Específicamente, la organización de datos en patrones de entrada y salida donde la observación en el paso de tiempo anterior se usa como entrada para pronosticar la observación en el paso de tiempo actual.
  3. Transforma las observaciones para tener una escala específica. Específicamente, para cambiar la escala de los datos a valores entre -1 y 1.

Estas transformaciones se invierten en los pronósticos para devolverlos a su escala original antes del cálculo y la puntuación de error.

Modelo MLP

Usaremos un modelo MLP base con 1 capa oculta de neuronas, una función de activación lineal rectificada en neuronas ocultas y una función de activación lineal en neuronas de salida.

Se utiliza un tamaño de lote de 4 siempre que sea posible, con los datos de entrenamiento truncados para garantizar que el número de patrones sea divisible por 4. En algunos casos, se utiliza un tamaño de lote de 2.

Normalmente, el conjunto de datos de entrenamiento se baraja después de cada lote o cada época, lo que puede ayudar a ajustar el conjunto de datos de entrenamiento a los problemas de clasificación y regresión. La reproducción aleatoria se desactivó para todos los experimentos, ya que parecía dar como resultado un mejor rendimiento. Se necesitan más estudios para confirmar este resultado para el pronóstico de series de tiempo.

El modelo se ajustará utilizando el eficiente algoritmo de optimización ADAM y la función de pérdida de error cuadrático medio.

Carreras experimentales

Cada escenario experimental se ejecutará 30 veces y la puntuación RMSE en el conjunto de prueba se registrará desde el final de cada ejecución.

Sumérjase en los experimentos.

¿Necesita ayuda con Deep Learning para series temporales?

Realice ahora mi curso intensivo gratuito de 7 días por correo electrónico (con código de muestra).

Haga clic para registrarse y obtener también una versión gratuita en formato PDF del curso.

Descarga tu minicurso GRATIS

Variar épocas de entrenamiento

En este primer experimento, investigaremos la variación del número de épocas de entrenamiento para un MLP simple con una capa oculta y una neurona en la capa oculta.

Usaremos un tamaño de lote de 4 y evaluaremos las épocas de entrenamiento 50, 100, 500, 1000 y 2000.

La lista completa de códigos se proporciona a continuación.

Esta lista de códigos se utilizará como base para todos los experimentos siguientes, y solo se proporcionarán los cambios a este código en las secciones posteriores.

También te puede interesar