桜の満開を予測する④(データ量を増やす)

スポンサーリンク
tech系(python)

はじめに

前回、LSTMのパラメータをいじったところ、精度がそれなりに良くなりました。

誤差範囲として1週間以内に収めることができました。

一方で、更なる精度改善ができないかを考えてみました。

理想は1日ぐらいの誤差でできればいいなと思っています。

機械学習の精度を上げる方法としては、単純にデータを増やすという方法があります。

ということで、今回はさらなる精度を求めてデータを増やして改善できるかを試します。

⇒最初に結果を言うと上手くいきませんでした。。参考までにしてもらえればと思います。

今回増やすデータ

元々の昼と追加で夜のデータも扱います。

さらに昔のデータも追加します。前回は1984年まで過去のデータでしたが、今回は1979年まで使います。

今回使用するデータは元々あった、お昼のデータに加えて夜のデータも追加したので、データ数は倍以上になっています。

実践

いままでのデータに今回のデータを加えて時系列に並べた状態で実施します。

これはdatetime型に変換すればいいのでそこまで難しくないです。

さらに、1日に2つのデータがあるためシーケンス長は120(60日×2)になります。

では、早速、学習させてみましょう。

損失関数は以下のように推移していました。(0.005以下で学習を止めるようにしています)

Epoch 0, Loss: 11615.6533
Epoch 50, Loss: 3653.7317
Epoch 100, Loss: 1081.2548
Epoch 150, Loss: 221.4908
Epoch 200, Loss: 134.2256
Epoch 250, Loss: 40.9605
Early stopping at epoch 267, loss: 0.0020

2020年の予測満開日: 2020-04-01
2021年の予測満開日: 2021-04-02
2022年の予測満開日: 2022-04-02
2023年の予測満開日: 2023-04-02
2024年の予測満開日: 2024-04-01

いや、精度下がっていますね。。。😅😅

ちなみに、実際の値は以下です。

困ったので、ChatGPT先生に聞いてみました。

ChatGPT先生曰く、原因としては、

  • 1日2回にすることで、朝と午後で気温や日射量などがブレやすくなり、LSTMが傾向を捉えづらくなった可能性がある

とのことだったので、昼と夜を別の変数に変換する方向で修正を試してみる事にしました。

例えば、気温であれば、昼の気温と夜の気温という様に2つのパラメータができる形になります。

再実施した結果は以下のようになりました。

損失関数は以下のように推移していました(0.005以下で止まるようにしています。)

Epoch 0, Loss: 9937.8184
Epoch 50, Loss: 1762.9629
Epoch 100, Loss: 1108.0454
Epoch 150, Loss: 493.4200
Epoch 200, Loss: 136.8478
Epoch 250, Loss: 40.6637
Early stopping at epoch 262, loss: 0.0001

予測結果は以下のようになりました。

2020年の予測満開日: 2020-03-31
2021年の予測満開日: 2021-04-01
2022年の予測満開日: 2022-04-01
2023年の予測満開日: 2023-04-01
2024年の予測満開日: 2024-03-31

うーん、改善できていませんね。。。

またまた困ったのでChatGPT先生に改善策を聞いてみました。

そしたら以下のようなアドバイスをくれました。

  • LSTMの層を深くする or dropout を入れる
  • MSE loss でなく MAE loss を試す

「LSTMの層を深くする or dropout を入れる」ことで、

抽象度の高い特徴を段階的に学習できるため、時系列の中の複雑な非線形性をよりうまく表現になり、

dropoutによって訓練データに過剰に適合(過学習)しないようにしてみるということです。

「MSE loss でなく MAE loss を試す」ことで、外れ値に強い(影響されにくい)予測ができます。

桜の開花には外れ値はあまりないと思いますが、試しにやってみました。

Epoch 0, Loss: 89.5711
Epoch 50, Loss: 54.7094
Epoch 100, Loss: 10.3089
Epoch 150, Loss: 7.9822
Epoch 200, Loss: 1.0772
Epoch 250, Loss: 0.0367
Epoch 300, Loss: 7.9789
Early stopping at epoch 326, loss: 0.0041

2020年の予測満開日: 2020-04-01
2021年の予測満開日: 2021-04-02
2022年の予測満開日: 2022-04-02
2023年の予測満開日: 2023-04-02
2024年の予測満開日: 2024-04-01

いや、そんな変わっとらん。。。😅😅

最後に

すんません、データを増やしてもそんな変わらんかったです。🙏🙏🙏

タイトルとURLをコピーしました