neuralforecast icon indicating copy to clipboard operation
neuralforecast copied to clipboard

[Core] Categorical Features

Open NudnikShpilkis opened this issue 11 months ago • 4 comments

What happened + What you expected to happen

According to the Exogenous Variables Tutorial:

When including exogenous variables always use a scaler by setting the scaler_type hyperparameter. The scaler will scale all the temporal features: the target variable y, historic and future variables.

That means that all non-static variables are scaled and treated as real numbers. Neural-Forecast should give the option of specifying categorical features that should be embedded and non-categorical features that should be scaled. Using the example from the tutorial gen_forecast should be scaled, while week_day should be treated as a categorical.

Versions / Dependencies

1.6.4

Reproduction script

https://nixtlaverse.nixtla.io/neuralforecast/examples/exogenous_variables.html

Issue Severity

Medium: It is a significant difficulty but I can work around it.

NudnikShpilkis avatar Mar 07 '24 15:03 NudnikShpilkis

Do we have a workaround for this in the meantime?

Thanks!

rd1886 avatar Mar 18 '24 19:03 rd1886

I think the handling of categorical exogenous variables is one of the few areas where neuralforecast is lacking. Other libraries such as Darts https://github.com/unit8co/darts allow you to specify for different models (e.g. TFT) what the static categorical variables etc. are so that they can be handled appropriately, however neuralforecast does not provide any ad hoc handling for categorical variables.

candalfigomoro avatar Mar 22 '24 15:03 candalfigomoro

@elephaint What do you think about introducing support for categorical variables (with categorical embedding) in neuralforecast for models that should support them, such as TFT and perhaps TiDE (others?). I ask because I see that you are unifying the API of the models in https://github.com/Nixtla/neuralforecast/pull/1023

candalfigomoro avatar Jun 06 '24 15:06 candalfigomoro

@candalfigomoro Makes sense, maybe a possibility for an EXOGENOUS_CAT attribute in each model. I'd like to unify the APIs of the different classes, then fix some of the losses and make a major doc improvement. I need to think/discuss priorities on that.

elephaint avatar Jun 06 '24 19:06 elephaint