9 votos

Regresión logística de series temporales

Estoy tratando de entrenar un modelo con datos que se parecen a esto:

Binary time series data

Hay razones teóricas para creer que la fila Y puede predecirse utilizando las filas X, con una ventana de unos 2 segundos. Tenga en cuenta que este gráfico es sólo un ejemplo. Hay alrededor de 100 series de tiempo como esa en mi conjunto de datos para el entrenamiento/validación.

Tengo conocimientos básicos en ML, pero nunca he hecho nada con series temporales, así que busco algún consejo. Sé que puedo reordenar los datos para que cada muestra sea un vector largo que contenga window_size * features y pasarlo por una regresión logística, pero no estoy seguro de que este sea el mejor enfoque por algunas razones:

  • El gran vector de características (digamos ~200 valores) podría causar un sobreajuste, ¿no es así?
  • He visto ejemplos que utilizan LSTM y CRF para predicciones de series temporales. Así que probablemente hay razones para utilizar algoritmos especializados para las tareas, pero no los conozco bien para entenderlos completamente. ¿Sugieres que invierta mi tiempo en estos o que me quede con el modelo de regresión logística más simple para este tipo de datos?
  • El uso de la regresión logística no tiene en cuenta el tiempo. Por ejemplo, intentar generar predicciones para series temporales con diferentes periodos de muestreo será imposible sin un remuestreo. ¿Los modelos construidos específicamente para series temporales lo tienen en cuenta automáticamente?

Además, esto me parece un problema general, que probablemente tenga una solución general. ¡Por lo tanto, las pistas sobre las bibliotecas de python que se construyen para procesar tales series de tiempo directamente (sin que yo tenga que reorganizar los datos primero) será grande!

6voto

Vitaly Puntos 53

Keras es una API de alto nivel que permite implementar redes neuronales recurrentes (RNN). Las RNN como las LSTM pueden ser buenos modelos para tus datos, dependiendo de la cantidad que haya. Aquí es un buen tutorial de introducción.

Lo que sugieres con la ventana de tiempo y la regresión logística puede funcionar mejor o puede funcionar mucho peor. A veces la agregación de eventos temporales pasados es muy eficaz, otras veces no tanto. En mi experiencia, es más eficaz cuando hay menos datos y la función de los pasos de tiempo anteriores a la variable de respuesta es demasiado complicada de aprender dada la pequeña cantidad de datos. La agregación puede permitirte guiar este aprendizaje con algo de experiencia en el dominio. (En mi caso, esto superó una vez a una RNN vainilla autoescrita, pero puede que no haya superado a una LSTM o GRU). Con una gran cantidad de datos, las RNN deberían superar este método en términos de rendimiento predictivo. Otra opción es un Modelo de Markov oculto . Sin embargo, una gran ventaja del método de la ventana temporal es que las características agregadas son interpretables. Yo probaría ambos métodos y vería cuál es el mejor.

En cuanto al sobreajuste, se puede utilizar la contracción con la regresión logística o el abandono, la contracción o la disminución de nodos con una RNN. Si te aseguras de comprobar el error en un conjunto de validación, puedes estar atento para evitar el sobreajuste.

Habría que remuestrear para que la RNN tenga en cuenta el tiempo (naturalmente procesan secuencias y es usted quien debe asegurarse de que los eventos de la secuencia estén uniformemente espaciados). Pandas tiene un remuestreo que puede ser útil, aunque también es posible que el procesamiento de secuencias en bruto en lugar de secuencias remuestreadas pueda dar mejores resultados--de nuevo, no estaría de más probar ambas formas.

Una buena introducción general y más a las RNN es el libro de Andrej Karpathy entrada del blog . Asimismo, véase el texto de Goodfellow et als Capítulo 10 .

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X