🕐

続、時系列の予測モデルを比較してみた

2021/10/08に公開

以前ブログで書いた時系列の予測モデル比較を、時系列データの交差検証である TimeSeriesSplit を使って試しました。
https://zenn.dev/megane_otoko/articles/024_time_series_pred

コードは GitHubColab

時系列データの交差検証

時系列データの場合は、未来のデータを使って過去の予測を使わないようにする必要があります。

TimeSeriesSplit() を使うと便利でした。

FOLD = 5
cross_rmse = []

tscv = TimeSeriesSplit(n_splits=FOLD, test_size=90)

for fold, (train_index, test_index) in enumerate(tscv.split(X)):
    X_train, X_test = X.iloc[train_index], X.iloc[test_index]
    y_train, y_test = y.iloc[train_index], y.iloc[test_index]

    # 略

    score = np.sqrt(mean_squared_error(y_test, y_pred))
    cross_rmse.append(score)

print(f"CROSS_RMSE {np.mean(cross_rmse)}")

https://tmitani-tky.hatenablog.com/entry/2018/12/19/001304

https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.TimeSeriesSplit.html#sklearn-model-selection-timeseriessplit

Pytorch による LSTM

パラメーターチューニングや層の設定が甘いせいか、Keras の LSTM のような精度が出ませんでしたが、Pytorch の LSTM も追加してみました。

https://zakopilo.hatenablog.jp/entry/2020/07/19/173851#anchor7

結果

精度、処理速度ともにLightGBMの精度が一番良い結果となりました。

以上になります、最後までお読みいただきありがとうございました。

Discussion