时间序列 - 向前验证
在时间序列建模中,随着时间的推移,预测变得越来越不准确,因此用实际数据重新训练模型是一种更现实的方法,因为它可以用于进一步的预测。 由于统计模型的训练不耗时,因此前向验证是获得最准确结果的首选解决方案。
让我们对我们的数据应用一步前向验证,并将其与我们之前得到的结果进行比较。
In [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)
In [335]:
test_ = pandas.DataFrame(test) test_['predictionswf'] = prediction
In [341]:
plt.plot(test_['T']) plt.plot(test_.predictionswf, '--') plt.show()
In [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 模型上应用前向验证。