¿Cómo entrenar el modelo LSTM en datos de series de tiempo múltiples?

14

¿Cómo entrenar el modelo LSTM en datos de series de tiempo múltiples?

Caso de uso: Tengo ventas semanales de 20,000 agentes durante los últimos 5 años. Necesita pronosticar las próximas ventas semanales para cada agente.

¿Debo seguir una técnica de procesamiento por lotes: tomar un agente a la vez, entrenar el modelo LSTM y luego pronosticar? ¿Alguna mejor manera?

Aljo Jose
fuente
te diste cuenta de esto? Estoy viendo un problema similar.
vishnu viswanath
@vishnuviswanath estamos trabajando en el desarrollo de una red neuronal (RNN) que puede ser un modelo único para todos los agentes.
Aljo Jose
Gracias. ¿Cómo estás entrenando el modelo para múltiples agentes? ¿Estás entrenando a un agente por lote?
vishnu viswanath
todavía estamos en etapa de construcción. kaggle.com/c/web-traffic-time-series-forecasting/discussion/… puede ayudar.
Aljo Jose

Respuestas:

12

Haga que la identidad del agente sea una de las características y capacítese en todos los datos. Probablemente entrene en un mini lote de, por ejemplo, 128 agentes a la vez: recorra la serie temporal de principio a fin para esos 128 agentes, luego seleccione un nuevo mini lote de agentes. Para cada mini lote, ejecute una porción de, digamos, 50 veces, y luego vuelva a preparar. Mantenga los estados finales de ese segmento y ejecute los siguientes 50 pasos, comenzando por esos estados finales. Enjuague y repita hasta llegar al final de los pasos de tiempo, para ese mini lote de ~ 128 agentes.

Al poner la identidad de cada agente como una de las características, permite que la red:

  • aprender de todos sus datos, maximizando así la utilización de sus datos, y
  • Aprenda las características únicas de cada agente, para que no promedie todos los agentes juntos
  • cuando prediga el futuro de un agente específico, asegúrese de usar sus funciones de identificación de agente correspondientes, y la red ajustará las predicciones en consecuencia.

Editar: Alpo Jose escribió:

ok, ¿necesito usar una codificación activa para identificar al agente?

Ooo, eso es verdad. Hay 20,000 de ellos. Eso es bastante Creo que lo que querrás hacer es 'incrustarlos'. Tiene una capa de búsqueda, que toma una identificación de agente (expresada como un entero, un índice) y genera un vector de alta dimensión, como algo así como un vector de longitud 50-300, probablemente un vector cuya longitud coincida aproximadamente con el tamaño oculto de tu LSTM.

Matemáticamente, una tabla de búsqueda, también llamada "capa de incrustación", es equivalente a convertir los identificadores de agente en vectores de un solo calor y luego pasar a través de una capa lineal (totalmente conectada). Sin embargo, los requisitos en memoria se reducen mucho para la capa de incrustación.

En términos de lo que aprenderá la capa de incrustación, a medida que la entrene, la capa de incrustación formará algún tipo de representación latente de cada agente. Es probable que la representación latente no sea legible / interpretable de ninguna manera, pero permitirá que el modelo aprenda cosas como 'ok, este agente, 1524, es relativamente efectivo, pero no los fines de semana; donde como 1526 es genial todos los días; etc .... ' Las dimensiones latentes del vector de incrustación en realidad pueden significar cosas, pero nadie intenta entender qué significan (creo que sería difícil / imposible). Sin embargo, las incorporaciones de alta dimensión por agente permiten al modelo aprender algo sobre el comportamiento de cada agente y modelar esto en las predicciones de series de tiempo.

Hugh Perkins
fuente
ok, ¿necesito usar una codificación activa para identificar el agente?
Aljo Jose
@AljoJose actualizó la respuesta para tener en cuenta esta pregunta
Hugh Perkins
Ahora entiendo, lo intentaré. gracias Hugh
Aljo Jose
Tengo un problema similar, pero a diferencia de los agentes aquí, tengo varias series de tiempo como instancias del mismo proceso, pero cada una de longitud variable. Por lo tanto, no necesito el agente (proceso, en mi caso) como característica. ¿Alguna sugerencia de cómo manejar eso?
Anakin