philipperemy / n-beats

Keras/Pytorch implementation of N-BEATS: Neural basis expansion analysis for interpretable time series forecasting.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

how to use/deploy n-beats for real world problems when the algorithm uses teacher forcing?

AtrCheema opened this issue · comments

I have difficulty in understanding the benefit of such time series algorithms which uses teacher forcing i.e. they are using the actual target/ground truth (of previous step) as input to the model. Let's consider, I want to make a model to predict hourly rainfall using temperature, humidity and wind as exogenous variables. If I use N-Beats, it requires me to have precipitation as input feature as well. How can I use/deploy such model because we don't know the target value during prediction. Will the prediction be done with batch_size of one i.e make prediction at one step, then use that prediction as input at the next step? I am sorry if that sounds very basic but I have difficulty in understanding the usefulness of such time-series models.

@AtrCheema It is true that in Time Series Analysis, a way to understand a time series is to study the structure P(x_t | x_0, ... x_{t-1}). It is also the case for NLP: http://karpathy.github.io/2015/05/21/rnn-effectiveness/. Most of the algorithms used in NLP rely on predicting the next work with some context (for example the last N words). This approach is popular because we don't have a clear way to define targets.

That said, if you want to consider humidity, wind, temperature -> rainfall, you will need a dataset with 4 columns. You are not required to have rainfall technically. In the original paper of NBeats, they consider time series with just one dimension so in that case you will have rainfall -> rainfall. But you could just train a model on just humidity, wind, temperature -> rainfall.

Will the prediction be done with batch_size of one i.e make prediction at one step, then use that prediction as input at the next step? I am sorry if that sounds very basic but I have difficulty in understanding the usefulness of such time-series models.

That's up to you. You can specify any batch_size during prediction. batch_size=1 is possible as well.
As soon as you have new values like humidity=1, wind=2, temperature=3 you can call the model on this to give you rainfall=4. You can also use the previous values of rainfall in the predictors as well.

I'll close this issue. Let me know if it helped!