多次元および多変量時系列予測(RNN / LSTM)Keras


12

Keras(またはTensorFlow)を使用して多次元および多変量の時系列予測を作成するためにデータを表現および形成する方法を理解しようとしてきましたが、正しい形状(ほとんどの例はわずかに少ない

私のデータセット:

  • いくつかの都市
  • 温度、車の交通量、湿度などの情報があります
  • たとえば、過去2年間(毎日1レコード)

私がやりたいこと: 温度、車の交通量、湿度の遅れの可能性のあるバージョンを使用して、来年に期待できる気温を各都市で予測したい(もちろん、さらにいくつかの機能がありますが、これは単に思考の例)。

混乱していること: 2つの都市がある場合、365日間に3つの機能を記録しました。モデルがこれら2つの都市の365日間の予測を出力できるように、入力をどのように整形する必要があります(つまり、365日間の2つの時系列温度)。

直感的には、テンソルの形状は(?, 365, 3)365日間と3つの機能になります。しかし、私は何を第一次元に固執するのか定かではありません。そして最も重要なことは、それが多くの都市のためでなければならないとしたら驚かれるでしょう。しかし、同時に、寸法を適切に理解する必要があることをモデルに指定する方法がわかりません。

任意のポインターが役立ちます。私は他のニューラルネットワークでこれを行ったので、Kerasなどでネットワークをどのように構築するか、より具体的には所望の入力のシーケンスをエンコードするのに最適な方法で、残りの問題にかなり精通しています。

ああ、また、私は各都市を独立して訓練し予測することができたと思いますが、誰もがおそらくどの都市にも特有ではないが、それらのいくつかを検討した場合にのみ見ることができる学習すべきことがあることに同意するでしょうそのため、モデルにエンコードすることが重要だと思う理由です。


1
このトピックに関する素晴らしいチュートリアルを次に示し
beta

回答:


13

LSTMの入力形状はでなければなりません(num_samples, num_time_steps, num_features)。例の場合、入力として両方の都市を組み合わせるnum_featuresと、2x3 = 6になります。

365のすべてのタイムステップを1つのサンプルにまとめると、最初の次元は1-1つのサンプルになります!データポイントの合計数を使用して、健全性チェックを行うこともできます。2つの都市があり、それぞれに365のタイムステップと3つの機能があります:2x365x3 = 2190。これは明らかに1x365x6と同じです(上で言ったように)-可能性はあります(Kerasが実行されます)-しかし、1つのサンプルを与えるだけで、一般化することはまったく学習しません。

私が最近答えたこの関連する質問を見てください。そこで、ローリングウィンドウの使用について少しお話します(詳細については、回答のコメントを確認してください)。必要に応じて、より多くのサンプルを購入できます。

入力として両方の都市のデータを使用して単一のモデルをトレーニングする場合、各タイムステップで両方の都市の予測を作成するのは、Dense2ユニットを出力する最終レイヤーを定義するのと同じくらい簡単です。検証/テストデータには、もちろん(city1、city2)のタプルが含まれている必要があります。

これにアプローチするためのおそらくより洗練された方法は、単一の都市ベースでデータセットを作成し、各都市でいくつかのサブモデルを個別にトレーニングし(5レイヤーなど)、次にそれらをMerge/ Concatenateさらにいくつかのレイヤーを重ねることです。これは、各都市の学習機能を組み合わせて、さらに高いレベルの抽象化に組み合わせることを意味します。ここで私は、検索エンジンから得た最初の画像アイデアをスケッチ、。


とても明確に答えてくれてありがとうございます!今ではとても理にかなっています。しかし、実際、私が恐れていたのは、あなたが説明した最初の解決策を実行すると、一般化が妨げられることです。しかし、スライディングウィンドウアプローチは、都市間で多くの一般化を実際に可能にしますか?
バスティアン

どういたしまして!ディープネットは常により多くのデータの恩恵を受けます。上記の私の提案には多くのパラメーターが含まれます。たった365ポイントで、それらの都市に過剰適合するリスクがあります(つまり、一般化されません)!データの増加を試すことができます- どのように、あなたのデータに依存します。十分なデータがあれば、一般化できます- 変数間の関係が解釈可能になるWord2Vecタイプの結果(テキスト分析/ NLPで一般的)を想像できます。infoこれをチェックし、さらに直感/楽しみのためにこれをチェックしてください。結果に天気図が表示される場合があります!
n1k31t4

はい、理にかなっているので、いくつかのローリングウィンドウを操作することは、あなたが言ったことを理解した場合に、一種の「より多くのデータ」をだましますか?
バスティアン

過去100日間に基づいて明日を予測すると、システムの状態は、1年前(ローリングウィンドウを使用しない場合)と比較して、昨日(ローリングウィンドウを使用する場合)から極端に変化することはないでしょう。技術的にはより多くのサンプルを作成しますが、新しいデータポイントを作成するのではなく、モデルが小さなチャンクに1つずつ集中できるように予測するのです。このより高い粒度により、すべてのデータを1つ当てはめて1つの予測を行う場合と比較して、結果に関するより良い(より滑らかな)統計ステートメントを作成できます。結果の不確実性を減らします。
n1k31t4

同意した!そして、ローリングウィンドウは、メモリセルが長い怒りの依存関係をまったく学習するのを妨げませんか?
バスティアン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.