heidelbergcement / hcrystalball

A library that unifies the API for most commonly used libraries and modeling techniques for time-series forecasting in the Python ecosystem.
https://hcrystalball.readthedocs.io/
MIT License
152 stars 19 forks source link

[FEATURE] Add support for Greykite #62

Open allen44 opened 3 years ago

allen44 commented 3 years ago

Is your feature request related to a problem? Please describe. No.

Describe the solution you'd like Add support for the recently open-sourced GreyKite by LinkedIn.

Introductory Blog post, on LinkedIn Engineering Blog Source, on Github Paper, published on arxiv

Describe alternatives you've considered I can try coding it up myself by using the wrapper class as a template, and make a pull request after I get the code to pass the unit tests, but I'm fairly new to python, and it might take me a week or more to make the code clean. As GreyKite was open-sourced less than one week ago, I wonder if someone has already implemented it in hcrystalball.

Additional context The linked blog post states that the main advantages of Greykite over Prophet are speed and out-of-the-box accuracy. It would be useful to many if this were implemented in HCrystal Ball.

table-showing-benchmark-comparison-of-silverkite-against-auto-arima-and-prophet

MichalChromcak commented 3 years ago

Hi @allen44, thanks both for the tip and the request. It indeed sounds like a good addition. I will have a look.

ambader commented 3 years ago

Had some trouble to run fbprophet and greykite in juxtaposition, as calling any fbprophet function by hcrystalball caused a kernel crash. Guess that's because installing greykite depreciates fbprophet==0.5 which uses the outdated pandas.to_datetime. Anyway, upgrading fbprophet after installing greykite worked.

pip install greykite
pip install fbprophet -U

As greykite has the fbprophet algorithm integrated, it's worth to think about not only adding greykite but swap fbprophet to reduce future conflicts.

MichalChromcak commented 3 years ago

I looked at the dependencies briefly and it seems there might be a possibility to get the most relevant part without interfering with the rest of HCrystalBall's dependencies.

Let's see how the discussion about Why pin runtime dependencies so tightly? resolves and act based on that.

In a meanwhile, I opened a PR64 that updates the dependencies in general.