Closed manujosephv closed 2 years ago
Hi @manujosephv,
The _sEncoder of the N-BEATSx model allows you to pass categorical features: https://github.com/Nixtla/neuralforecast/blob/main/nbs/models_nbeats__nbeats.ipynb https://github.com/Nixtla/neuralforecast/blob/main/neuralforecast/models/nbeats/nbeats.py#L38-L51
The ES-RNN model already has level and seasonality embeddings that work as you mentioned. 2.1. Regarding the embeddings solution, they work well until the dataset grows into millions of series and explode in memory. 2.2. Or in our experience, embeddings tend to be harder to learn with little data, in the past we have preprocessed and passed the train seasonalities with the static features (inspired by the ES-RNN) with very good success. https://github.com/Nixtla/neuralforecast/blob/main/nbs/models_esrnn__esrnn.ipynb https://github.com/Nixtla/neuralforecast/blob/main/neuralforecast/models/esrnn/esrnn.py#L200
We are working on a multivariate extension to N-HiTs with embeddings. This is still research work.
Hope that the existing categorical options of neuralforecast
models help you.
Thanks for your comment.
Hi, is this _sEncoder
mentioned implemented somewhere in nbeatsx? I'd tried looking for it in the docs but was unable to find any mention of it.
Hey @rcslight, thanks for using NeuralForecast :)
For the moment we have a simplified NBEATSx in new versions NeuralForecast library: https://nixtla.github.io/neuralforecast/models.nbeatsx.html
The paper version is available in this repository: https://github.com/cchallu/nbeatsx
We will be working to augment NeuralForecast's NBEATSx soon.
Is your feature request related to a problem? Please describe. Many real life datasets have categorical features, some of them meta data about a time series(static) and some of them varying with time(exogenous). Currently the only way to include such variables is to do some preprocessing and encode those variables as numbers
Describe the solution you'd like An option to specify these features(static or dynamic) are categorical and then use an Embedding Layer to replace them with learned embedding while training.
Describe alternatives you've considered Alternative solution would be to use separate category encoders and convert these features to numbers prior to training.
Additional context This is what GluonTS has implemented.