intive-DataScience / tbats

BATS and TBATS forecasting methods
MIT License
178 stars 19 forks source link

Why is TBATS so slow compared to ETS? #30

Open eyalshafran opened 2 years ago

eyalshafran commented 2 years ago

I understand that TBATS is not a fast method but why is it so slow compared to ETS with similar number fo free parameters? For example, using sktime with these two setups: TBATS(use_box_cox=False, use_arma_errors=False, sp=[7]) AutoETS(auto=True, additive_only=False, sp=7) The number of seasonal harmonics found for TBATS is 3 so the two models have roughly the same number of parameters to optimize. The AutoETS runs 20x faster. Is there a way to set the number of Fourier components for a model instead of it being computed? I can't imagine that would make a huge difference though.

cotterpl commented 2 years ago

I am sorry you find it slow. I am open to suggestions on how to optimise this.

There is no direct way to set the number of Fourier components. But you can try manually adjusting the code. I would start by looking at usages of tbats.tbats.HarmonicsChoosingStrategy.HarmonicsChoosingStrategy.calculate_max method

eyalshafran commented 2 years ago

Thank for the reply. I will look into the code you suggested.

Regarding the speed, I'm not an expert in the implementation details. Have you tried to bench mark BATS speed compared to ETS in statsmodels? I think they are similar models if you don't use box_cox and arma errors and only have a single seasonality.

microprediction commented 2 years ago

Commenting to keep abreast of this thread. I too would love tbats to be faster because it is performing very well, and better than ETS on my problems. But that might be asking for a pony. There are all sorts of issues with making comparisons but for what it is worth, here are some varieties of tbats outperforming: https://microprediction.github.io/timeseries-elo-ratings/html_leaderboards/overall.html I am taking a different approach to trying to create a fast version of tbats but thus far not succeeding. I'll definitely add to this thread.