[Análisis de datos] Análisis predictivo mediante algoritmos de aprendizaje automático (4): Modelo de media móvil diferencial autorregresivo (AutoARIMA) (2021-01-18)

Métodos de aprendizaje automático en la predicción de series de tiempo (4): modelo de media móvil diferencial autorregresiva (Auto ARIMA)

Este artículo es el cuarto artículo de la serie de " Métodos de aprendizaje automático en el pronóstico de series de tiempo ". Si está interesado, puede leer primero el artículo anterior:
[Análisis de datos] Análisis predictivo mediante algoritmos de aprendizaje automático (1): Promedio móvil ( Media móvil) Media)
[Análisis de datos] Análisis predictivo mediante algoritmos de aprendizaje automático (2): Regresión lineal
[Análisis de datos] Análisis predictivo mediante algoritmos de aprendizaje automático (3): K-Vecinos más cercanos

El modelo de media móvil integrado auto regresivo (ARIMA, modelo de media móvil integrado auto regresivo) es un método estadístico muy popular para el pronóstico de series de tiempo. El modelo ARIMA tiene en cuenta los valores pasados ​​para predecir valores futuros. Hay tres parámetros importantes en ARIMA:

  • p (el valor pasado usado para predecir el próximo valor)
  • q (error de pronóstico pasado utilizado para predecir valores futuros)
  • d (orden diferencial)

El ajuste de los parámetros ARIMA llevará mucho tiempo. Por lo tanto, utilizamos Auto ARIMA para seleccionar automáticamente la mejor combinación (p, q, d) con el menor error.

El conjunto de datos es el mismo que el de los tres artículos anteriores y el propósito es comparar los efectos de predicción de diferentes algoritmos en el mismo conjunto de datos. El conjunto de datos y el código están en mi GitHub , y los amigos que lo necesiten pueden descargarlos por sí mismos.

Importe el paquete y lea los datos.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df = pd.read_csv('NSE-TATAGLOBAL11.csv')

Utilice la fecha como índice.

# setting the index as date
df['Date'] = pd.to_datetime(df.Date,format='%Y-%m-%d')
df.index = df['Date']

Los datos originales se dividen en conjunto de entrenamiento y conjunto de predicción.

data = df.sort_index(ascending=True, axis=0)

train = data[:987]
valid = data[987:]

training = train['Close']
validation = valid['Close']

Importe el modelo y encuentre automáticamente los mejores parámetros p, q, d.

from pmdarima import auto_arima

model = auto_arima(training, start_p=1, start_q=1, max_p=3, max_q=3, m=12, start_P=0, seasonal=True, d=1, D=1, trace=True, error_action='ignore', suppress_warnings=True)
model.fit(training)

forecast = model.predict(n_periods=248)
forecast = pd.DataFrame(forecast, index = valid.index, columns=['Prediction'])

Inserte la descripción de la imagen aquí
El tamaño de RMSE refleja el tamaño del error hasta cierto punto.

rmse = np.sqrt(np.mean(np.power((np.array(valid['Close'])-np.array(forecast['Prediction'])),2)))
rmse

Observe visualmente la situación del pronóstico dibujando.

#plot
plt.figure(figsize=(16,8))
plt.plot(train['Close'])
plt.plot(valid['Close'])
plt.plot(forecast['Prediction'])
plt.show()

Inserte la descripción de la imagen aquí
Puede verse que el efecto de predicción del algoritmo AutoARIMA en este conjunto de datos no es muy bueno. Sin embargo, el modelo ha capturado la tendencia de la serie temporal y, como no presta atención al impacto de los cambios estacionales, el pronóstico no es lo suficientemente preciso.

Supongo que te gusta

Origin blog.csdn.net/be_racle/article/details/112780195
Recomendado
Clasificación