実現したいこと
Python の機械学習ライブラリ Keras を用いた複数時系列データの予測.
学習データとラベルデータ
ここで扱う時系列データは以下の通りです.
# x: 時系列学習データ(要素数はすべてのデータセットにおいて18個) # y: ラベルデータ(正解ラベルは0または1) # 時系列学習データは右が最新データ,左が最古のデータです. # 学習データセット(1つ目) x1 = [10, 20, 30, 30, 30, 20, 20, 40, 40, 50, 60, 70, 70, 70, 80, 90, 90, 80] y1 = 1 # 学習データセット(2つ目) x2 = [50, 40, 30, 30, 20, 20, 40, 30, 20, 10, 10, 0, 0, 0, 10, 0, 0, 0] y2 = 0 ... # このようなデータセットが膨大にあります.
学習データセットの1つ目は,初め(最も左)から次第に数値が大きくなっていき,最終的(最も右)には80まで数値が上がっており,ここで時系列データは終了しています.
これに対して,ラベルデータ(結果)が1となっています.
一方,学習データセットの2つ目では,数値が次第に下がっていき,最終的に0となり時系列データは終了しています.
また,これに対してのラベルデータ(結果)は0となっています.
なお,検証するときも同様に時系列データを入力することになります.
# x: 入力データ # result: ラベルが1となる確率 x = [10, 20, 10, 10, 40, 50, 60, 60, 70, 70, 80, 90, 80, 80, 80, 90, 90, 90] result = model.predict(x) # result: 88.746...% # 今回は入力データの数値が徐々に大きくなっているため,ラベルが1となる確率は88%と高く出ています. # 数値が徐々に小さくなる時系列データの場合は,ラベルが1となる確率は低くでるべきです.
個人的な予想と実現したいこと
数値が時系列的に上昇していれば,1になりやすく,
数値が時系列的に下降していれば,0になりやすい.
このような法則(?)を機械学習に学習させたいです.
もちろん,最後のデータ(最も右)だけを学習させれば解決できる話のように見えますが,
ここは,あえて時系列データを使った結果を求めたいという目標があるため,ご理解いただきたいです.
参考にしている記事(学習方法)
現在参考にしている学習方法は『Kerasで基本的なRNN (LSTM) を試してみる』の記事に書かれている内容とほぼ同じものです.
当記事で扱っているデータは以下の通りのようです.
# x: 学習データ(要素数はデータによって異なる) # y: ラベルデータ(正解ラベルは時系列学習データの和) # 学習データセット(1つ目) x1 = [1, 0, 0, 1, 1, 1, 0, 0, 1, 0] y1 = 5 # 学習データセット(2つ目) x2 = [0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0] y2 = 4 ... # このようなデータセットが膨大にあります.
学習データの和が正解ラベルとして学習しているようです.
学習結果は当記事に書かれてある通りで,ほぼ高精度で予測ができているように思えます.
初めに示した「学習データとラベルデータ」にある通り,当記事の学習データが今回私が扱う学習データセットに似ていることからこのサイトを参考にしています.
時系列データは1つではない
扱う学習データセットは「学習データとラベルデータ」で示した通りですが,時系列データは複数あり,それに対応するラベルデータも複数あることに注意してください.
一般的に時系列データの学習といえば,学習させる時系列データは1つであるという認識が強いようで,例えば株の予測で言えば1つの長い時系列データを学習させて,その後の動向を見るというものがあります.(他にも簡単なものでsin波の予測など)
しかし,今回扱うデータはそのような学習とは異なるということをご理解ください.
複数の時系列データでの学習方法がなかなか見つからない
もちろん,ここで質問する前にとても長い時間をかけて複数の時系列データとそれに対応する複数のラベルデータの学習方法を調べましたが,全くヒットせず,ようやく見つけたのが上記の参考サイトでした.
そもそも複数の時系列データの学習方法の調べ方(検索の言葉選び)が悪かったのかもしれません.
実現したいことまとめ
現在は上記にて示した参考サイトをもとに学習と検証をしていますが,そもそも**そのやり方でよいのか?**という疑問が湧きました.
扱っているデータやそれをもとに求めたい結果も上記に記載しましたので,現在のやり方よりも良いやり方があるようでしたら教えていただきたいです.良いやり方でなくとも,新たなアプローチがあれば教えていただきたいです.
なお,現在の学習結果としては良いとまでは言えない結果になっています.
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/18 13:27
2020/10/18 13:45
2020/10/19 04:14
2020/10/19 09:13
2020/10/20 00:35