LSTMニューラルネットワークが在庫予測(コード解釈)(線形予測)を行えるかどうか

          最近、LSTMが在庫予測を行うことができるかどうか誰かが私に尋ねてきました。非常に多くの人々が株式を予測するためのコードを書いています。なぜ購入する特定のアプリケーションがないのですか?LSTMメソッドが正確な線形予測を行えるかどうか。LSTM予測問題の解決策として、株価予測および線形予測問題(例:PM2.5予測、交通量予測)の解決策からインターネット上のいくつかのコードの現在の考え方を概説します(これは、単なる個人的な洞察です)。コメントを残す)

ディレクトリ

株価予測の問題:

線形予測問題:

要約:


株価予測の問題:

        株価予測問題の現在のコードを要約すると、株価予測には2種類の予測方法(またはLSTMを使用して解決する2つの異なる予測問題)があることがわかります。 

        1つは、始値、数量などの関連特性を使用して終値を予測することです(多変量時系列予測とも呼ばれます)データと予測結果を図に示します。

              

           これは、インターネットで探しているデータの種類であり、LSTM株価予測について最初に学習した最初の方法とデータの種類でもあります。在庫予測に高次元の機能を使用すると、確かに精度が高くなりますが(理論的には)、この方法には依然として正確な誤差があります。現在、終値予測のためにこのタイプのデータセットを解く場合、人々は2つの方法を使用して入力特徴変数と予測ラベルを構築することがよくあります。 4日目の終値を予測する)

                                                                

                         

       機能を動的に構築する上記の方法は、多くの場合、スライディングウィンドウと呼ばれます。つまり、履歴データの特性を使用して、将来のラベル出力を予測します。もちろん、この方法では、履歴データを通じて1日の出力のみを予測できます。このタイプのデータを構築するために一般的に使用される方法コードは、次のように説明できます。

def multivariate_data(dataset, target, start_index, end_index, history_size,target_size, step, single_step=False):
  data = []
  labels = []
  start_index = start_index + history_size
  if end_index is None:
    end_index = len(dataset) - target_size
  for i in range(start_index, end_index):
    indices = range(i-history_size, i, step)
    data.append(dataset[indices])
    if single_step:
      labels.append(target[i+target_size])
    else:
      labels.append(target[i:i+target_size])
  return np.array(data), np.array(labels)

      もう1つは、株価の終値に基づいて将来の価格傾向を線形予測することです(単変量時系列予測とも呼ばれます)。たとえば、データのバッチをランダムに収集し、図に正規化されたスタイルを示し、この図では、入力フィーチャ変数と予測ラベルを作成する方法を描きました。

                                                                         

         つまり、フィーチャを使用してモデルをトレーニングし、トレーニングしたモデルを再び使用して将来の値を予測します。この機能の構築も、スライディングウィンドウ方式を使用して構築されることが多く、その実装コードは次のとおりです。

def univariate_data(dataset, start_index, end_index, history_size, target_size):
  data = []
  labels = []
  start_index = start_index + history_size
  if end_index is None:
    end_index = len(dataset) - target_size
  for i in range(start_index, end_index):
    indices = range(i-history_size, i)
    data.append(np.reshape(dataset[indices], (history_size, 1)))
    labels.append(dataset[i+target_size])
  return np.array(data), np.array(labels)

       株式を予測する上記の2つの方法は、いくつかの履歴データのみを使用して、将来の特定の日を予測することを学ぶか、または将来の1日遅れたデータを予測すると言えます。LSTMニューラルネットワークに入る入力データの構造を図に示します。

                                                 

               実際の予測の出力は、構造が次のようになることを示しています。

                                                 

              これまでのところ、私が知っている株価予測の2つの異なるデータタイプによって構築された入力フォームについて説明しました。データ入力フォームから判断すると、トレーニングされたモデルには株価を予測する機能があります。つまり、トレーニングされたLSTMニューラルネットワークは実際に線形予測を行うことができますが、なぜ誰もがコード予測において非常に高い精度を持っているのですが、実際のアプリケーションでは機能しませんか?私の理解では、株価の問題には、政治的要因、市場環境要因などのさまざまな特性要因の影響が含まれます。これらの特性は、ベクトルの形で正確に反映することが難しいため、トレーニングしたモデルは適用できません。別の理由としては、履歴の限られた特徴データに基づいてトレーニングされたモデルに履歴データの過剰適合の問題があり、アプリケーションが不正確になるなどのさまざまな理由が考えられます。

線形予測問題:

     在庫予測の問題に関する上記の議論に基づいて、LSTMネットワークモデルが実際に線形問題を予測できることを見つけることは難しくありません。いわゆるスライディングウィンドウ方式を使用して、入力機能と出力機能を作成するだけです。

      ただし、マルチポイント予測を行う方法、つまり、指定されたポイントデータに基づいて一定期間のデータ値を予測できるようにするには、入力フィーチャ構造とモデル出力を変更する必要があります。

     たとえば、最後のレイヤーの出力は次の形式に設定できます。マルチポイント予測問題(将来のある期間のデータを予測する)に基づいて、特定のアプリケーションの実装コードの概要を説明します。

                                                     

multi_step_model.add(tf.keras.layers.Dense(72))

要約:

     このタイプの予測問題に興味がある場合は、私の議論に基づいて在庫予測を再現することもできます。私の以前の理解に問題またはエラーがある場合は、批評、修正、または議論のためにQ525894654を追加できます。ご存知のように、株式市場は非常に不安定で予測不可能です。ただし、価格予測にディープラーニング手法を使用することには、確かに使用の可能性があります。したがって、アルゴリズムモデルは特定の値ではなく(常にではないが)株価の動きを正しく予測できると考えています(分類の問題を行うのが最善です)。したがって、私は確率的時系列モデルに基づいていると思います(以前に誰かが確率的時系列モデルを提唱したのを見たことがあります)。おそらく、より形而上学的な方法が株価予測により適しています。

元の記事を40件公開しました 賞賛されました203 190,000回閲覧されました

おすすめ

転載: blog.csdn.net/weixin_40651515/article/details/105571639