Serie temporal: validación progresiva
En el modelado de series de tiempo, las predicciones a lo largo del tiempo se vuelven cada vez menos precisas y, por lo tanto, es un enfoque más realista volver a entrenar el modelo con datos reales a medida que están disponibles para futuras predicciones. Dado que el entrenamiento de modelos estadísticos no requiere mucho tiempo, la validación progresiva es la solución preferida para obtener resultados más precisos.
Apliquemos la validación de un paso adelante en nuestros datos y compárelos con los resultados que obtuvimos anteriormente.
En [333]:
prediction = []
data = train.values
for t In test.values:
model = (ExponentialSmoothing(data).fit())
y = model.predict()
prediction.append(y[0])
data = numpy.append(data, t)
En [335]:
test_ = pandas.DataFrame(test)
test_['predictionswf'] = prediction
En [341]:
plt.plot(test_['T'])
plt.plot(test_.predictionswf, '--')
plt.show()
En [340]:
error = sqrt(metrics.mean_squared_error(test.values,prediction))
print ('Test RMSE for Triple Exponential Smoothing with Walk-Forward Validation: ', error)
Test RMSE for Triple Exponential Smoothing with Walk-Forward Validation: 11.787532205759442
Podemos ver que nuestro modelo funciona significativamente mejor ahora. De hecho, la tendencia se sigue tan de cerca que en la gráfica las predicciones se superponen con los valores reales. También puede intentar aplicar la validación de avance en modelos ARIMA.