Временные ряды - пошаговая проверка вперед
При моделировании временных рядов прогнозы со временем становятся все менее и менее точными, и, следовательно, это более реалистичный подход - повторно обучать модель с фактическими данными, когда они становятся доступными для дальнейших прогнозов. Поскольку обучение статистических моделей не требует много времени, пошаговая проверка является наиболее предпочтительным решением для получения наиболее точных результатов.
Давайте применим к нашим данным пошаговую проверку вперед и сравним их с результатами, которые мы получили ранее.
В [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)
В [335]:
test_ = pandas.DataFrame(test)
test_['predictionswf'] = prediction
В [341]:
plt.plot(test_['T'])
plt.plot(test_.predictionswf, '--')
plt.show()
В [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
Мы видим, что наша модель теперь работает значительно лучше. Фактически, тренд отслеживается так внимательно, что предсказания на графике перекрываются с фактическими значениями. Вы также можете попробовать применить предварительную проверку к моделям ARIMA.