Tensorflow

Tensorflowでドル円予測をしてみました(2)

こちらのUdemyのコースでTensorflowを使ったビットコインの予測が紹介されていました。それを参考にドル円の予測をやってみました。
前回、訓練データとテストデータの準備をしました。今回から予測を行っていきます。
今回は、今後色々なモデルを作成比較するうえでのベースラインとなるナイーブモデルを使います。
ナイーブモデルというのは、直前の値を次の値の予測値とするという非常に単純なモデルのようです。 ナイーブモデルについては、Udemyのコースではこちらのサイトが紹介されていましたので、興味のある方は読んでみてください。

ナイーブモデルは、直前の値を次の値の予測値とするもですので、トレーニングデータは使いません。
テストデータの値を1つずらすだけでOKです。
グラフにプロットすると次のようになります。

naive_forecast = y_test[:-1] 

plt.figure(figsize=(10, 7))
plt.plot(X_train[0:], y_train[0:], ".", label="Train data")
plt.plot(X_test[0:], y_test[0:], ".", label="Test data")
plt.plot(X_test[1:], naive_forecast, "-", label="Naive forecast")
plt.xlabel("Time")
plt.ylabel("USDJPY")
plt.legend(fontsize=14)
plt.grid(True)
直近120日を拡大して見てみます。
offset = len(y_test) - 120

plt.plot(X_test[offset:], y_test[offset:], ".", label="Test data")
plt.plot(X_test[offset+1:], naive_forecast[offset:], "-", label="Naive forecast")
plt.xlabel("Time")
plt.ylabel("USDJPY")
plt.legend(fontsize=10)
plt.grid(True)

ナイーブモデルの予測がテストデータに遅れてついていく様子がわかります。

では、評価してみます。

tf.keras.metrics.mean_absolute_error(y_test[1:], naive_forecast).numpy()
0.3212658959537575

MAEは32pipsです。
これをどこまで改善できるか、次回以降いよいよTensorflowで予測していきます。