temporales - Predicción de series de tiempo(eventualmente con python)
series temporales econometria (7)
- ¿Qué algoritmos existen para el pronóstico / regresión de series de tiempo?
- ¿Qué pasa con el uso de redes neuronales? (¿Los mejores documentos sobre este tema?)
- ¿Hay bibliotecas de Python / fragmentos de código que pueden ayudar?
Dos enfoques
Hay dos formas de tratar las entradas estructuradas temporales para la clasificación, regresión, agrupación, pronóstico y tareas relacionadas:
- Modelo de serie temporal dedicado: el algoritmo de aprendizaje automático incorpora dichas series de tiempo directamente. Tal modelo es como una caja negra y puede ser difícil explicar el comportamiento del modelo. Los ejemplos son modelos autorregresivos.
- Enfoque basado en características: aquí las series de tiempo se asignan a otra representación, posiblemente de menor dimensión. Esto significa que el algoritmo de extracción de características calcula características tales como el valor promedio o máximo de la serie de tiempo. Las características se pasan luego como una matriz de características a una máquina de aprendizaje "normal", como una red neuronal, un bosque aleatorio o una máquina de vectores de soporte. Este enfoque tiene la ventaja de una mejor explicación de los resultados. Además, nos permite utilizar una teoría bien desarrollada del aprendizaje automático supervisado.
Tsfresh calcula una gran cantidad de características
El paquete de python tsfresh calcula una gran cantidad de tales características desde un pandas.DataFrame que contiene la serie de tiempo. Puede encontrar su documentación en http://tsfresh.readthedocs.io .
Descargo de responsabilidad: Soy uno de los autores de tsfresh.
¿ Autocorrelation para encontrar patrones periódicos en series de tiempo? Puedes hacer eso con la función numpy.correlate .
Aunque no responde directamente a la pregunta, después de una gran cantidad de búsquedas en Google sobre bibliotecas adecuadas para la predicción de series temporales y la minería de datos secuencial, encontré esta página del taller http://sequenceanalysis.github.io/ que tiene un código interesante con respecto al ajuste de cadena de Markov . Espero que también ayude a alguien más :)
Hablando solo sobre los algoritmos detrás de ellos, recientemente usé el suavizado exponencial doble en un proyecto y funcionó bien al pronosticar nuevos valores cuando hay una tendencia en los datos.
La implementación es bastante trivial, pero tal vez el algoritmo no esté lo suficientemente desarrollado para su caso.
Los enfoques clásicos de la regresión de series de tiempo son:
Modelos auto-regresivos (hay literaturas enteras sobre ellos)
Descomposición de Fourier o similar para extraer los componentes periódicos de la señal (es decir, oscilaciones ocultas en los datos)
Otros enfoques menos comunes que conozco son
Análisis de características lentas , un algoritmo que extrae las fuerzas motrices de una serie de tiempo, por ejemplo, los parámetros detrás de una señal caótica
La red neuronal (NN) se acerca, ya sea utilizando NN recurrentes (es decir, construidas para procesar señales de tiempo) o NN de avance clásico que reciben como parte de entrada de los datos pasados e intentan predecir un punto en el futuro; La ventaja de este último es que se sabe que las NN recurrentes tienen un problema al tener en cuenta el pasado lejano
En mi opinión, para el análisis de datos financieros es importante obtener no solo una extrapolación de las series de tiempo más acertadas, sino también un intervalo de confianza confiable, ya que la estrategia de inversión resultante podría ser muy diferente dependiendo de eso. Los métodos probabilísticos, como los procesos gaussianos, le dan eso "gratis", ya que devuelven una distribución de probabilidad sobre posibles valores futuros. Con los métodos estadísticos clásicos, tendrás que confiar en las técnicas de arranque .
Hay muchas bibliotecas de Python que ofrecen herramientas estadísticas y de aprendizaje automático, aquí están las que estoy más familiarizado con:
- NumPy y SciPy son una necesidad para la programación científica en Python
- Hay una interfaz de Python para R, llamada RPy
- statsmodel contiene técnicas clásicas de modelos estadísticos, incluidos modelos autorregresivos; Funciona bien con Pandas , un popular paquete de análisis de datos.
- scikits.learn , MDP , MLPy , Orange son colecciones de algoritmos de aprendizaje automático
- PyMC Un módulo de python que implementa modelos estadísticos bayesianos y algoritmos de ajuste, incluida la cadena de Markov Monte Carlo.
- PyBrain contiene (entre otras cosas) implementaciones de redes neuronales de avance y recurrentes
- En el sitio del Proceso Gaussiano hay una lista de software de GP, que incluye dos implementaciones de Python
- mloss es un directorio de software de aprendizaje automático de código abierto
No tengo idea de las bibliotecas de Python, pero hay buenos algoritmos de pronóstico en R que son de código abierto. Consulte el paquete de forecast para el código y las referencias para el pronóstico de series de tiempo.
El método grupal de manejo de datos se usa ampliamente para pronosticar datos financieros.