2
LSTM:時系列を予測するときに非定常性を処理する方法
LSTMを使用して、時系列の1ステップ先の予測を行いたい。アルゴリズムを理解するために、私はおもちゃの例を作成しました:単純な自己相関プロセス。 def my_process(n, p, drift=0, displacement=0): x = np.zeros(n) for i in range(1, n): x[i] = drift * i + p * x[i-1] + (1-p) * np.random.randn() return x + displacement 次に、この例に従ってKerasでLSTMモデルを作成しました。p=0.99長さの自己相関が高いプロセスをシミュレートn=10000し、その最初の80%でニューラルネットワークをトレーニングし、残りの20%に対して1ステップ先の予測を実行させました。 私が設定した場合drift=0, displacement=0、すべてが正常に動作します: それから私は設定しdrift=0, displacement=10、物事は洋ナシ形になりました(y軸の異なるスケールに注意してください): [ - 1 、1 ][−1、1][-1, 1] 次に、を設定しdrift=0.00001, displacement=10、データを再度正規化して、その上でアルゴリズムを実行しました。これはよく見えません: バツt− Xt − 1バツt−バツt−1X_{t} - X_{t-1}バツtバツtX_t …