heidelbergcement/hcrystalball

[FEATURE] Add support for Greykite

allen44 opened this issue · 3 comments

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

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

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.

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.