I have a dataset of points along a wave whose cycles slowly grow in period over time. I have ~47 cycles worth of data. My goal is to forecast at least one whole cycle into the future (around 50 data points). So far, I've tried feeding in 3-5 cycles worth of points into the LSTM input and then tried outputting 1 cycle worth of points for the forecast.

To convert the 1D series data into training data I've been taking the first ~250 points as a X and the next 50 points as the label y. I then shift one point forward, and generate a new 300 point "example" consisting of an X and y. After the data is converted, I use the last 300 points as a X and y for the validation set.

I've been getting really bad results, and I wanted to know if there was a different way to frame this problem. If I'm only using 3-5 cycles as input isn't this potentially loosing information about past data? Or should this connection be captured in the LSTM?

I'm also using one LSTM node in the Keras model and it's set to stateful. I've noticed that I get the same results whether or not model.reset_states() is called after each epoch.

I've seen similar question, but most seem to be focused on very short forecasts ranging from 1 to 5 points.

Any suggestions would be really appreciated.


1 Answer 1


I think the problem here is that cycle length is growing as the training window proceeds down the time series. That will give any NN heartburn. Consider a radically different approach based on feature detection. When you look at a repeating cycle you see it contains various components, which remain the same at any frequency: A top, bottom, rising trend, and falling trend. First build a NN that detects these components. Then a straight algorithm that scores the component sequence as well as estimates the time distance between them. Then another algo that reconstructs the location of future components, then a 3rd algo reconstruct the entire future time series to fit the time and locations of projected components (cubic splining?) This approach is more likely to survive a time series with growing wavelength. So in all of this, the NN is used to perform the hard part: pattern recognition on noisy data.

  • $\begingroup$ You mayor try a 1D CNN as in audio $\endgroup$ Feb 22, 2018 at 6:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.