時系列-ウォークフォワード検証
時系列モデリングでは、時間の経過に伴う予測の精度が低下するため、モデルがさらに予測できるようになったときに、実際のデータを使用してモデルを再トレーニングする方が現実的です。統計モデルのトレーニングには時間がかからないため、最も正確な結果を得るには、ウォークフォワード検証が最も好ましいソリューションです。
データにワンステップウォークフォワード検証を適用し、以前に取得した結果と比較してみましょう。
[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モデルにもウォークフォワード検証を適用してみることができます。