-
Notifications
You must be signed in to change notification settings - Fork 264
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Forecasting in EVA #969
Forecasting in EVA #969
Conversation
Hi @americast, the design looks great. Is the idea that training will be implicit here? When the user runs |
Thanks @xzdandy for your review. As of now, yes the training is implicit. Since |
Hi @americast, I see you are using Forecast(unique_id, ds, y) to forecast for a single time series data. I was wondering if you have a functionality to forecast for panel data. If yes, how would you make final model selection if groups in the panel do not have same seasonality/trend pattern. |
Hi Jyoti, Thanks for showing interest in evadb. We are in the early phases of adding forecasting. @americast @xzdandy Thoughts? |
Hi @jyotigoyal09. Thanks for your interest! Having the functionality to forecast for panel data could be a very useful functionality. In case of miltivariate forecasting, we can find the lowest common seasonality and use the same. However, we could also focus our attention on various deep learning models that do not have the requirement for specifying a seasonality upfront, such as transformer-based models. It would be great if we could discuss in detail about this in an issue. |
@xzdandy I have pushed some commits and now the training is more like the Ludwig-style (#935). The training occurs when the UDF is created and the trained model is stored using a unique model file name generated from the data. Now, whenever the UDF is called, the user only needs to specify the horizon. I have updated the commands in #969 (comment) accordingly. |
Thanks for the contribution! The implementation looks good to me at high level. We can add
|
7dae25b
to
04c859b
Compare
@xzdandy Thanks. I have added the test and the docs. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for adding the tests and documentations. They look great.
Minor improvements.
- Fix the linter:
bash script/test/test.sh -m LINTER
- Add statsforecast dependency in setup.py
- Install the statsforecast dependency in .cricle/config.yml, so the test will be run in long integration tests.
Thanks. I have updated them. Please let me know if this looks all good. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great work! Verified the long integration test works on python3.10.
Awesome, thanks! |
Implemented standalone forecasting in EVA (using [statsforecast](https://nixtla.github.io/statsforecast) package). You can run it via the following commands: ```sql DROP TABLE IF EXISTS AirData; CREATE TABLE AirData ( unique_id TEXT(30), ds TEXT(30), y INTEGER); LOAD CSV 'data/forecasting/air-passengers.csv' INTO AirData; DROP UDF IF EXISTS Forecast; CREATE UDF Forecast FROM (SELECT unique_id, ds, y FROM AirData) TYPE Forecasting 'predict' 'y'; SELECT Forecast(12) FROM AirData; ``` Here `Forecast(12)` signifies a horizon length of `12`. Thanks! --------- Co-authored-by: xzdandy <[email protected]>
Implemented standalone forecasting in EVA (using statsforecast package). You can run it via the following commands:
Here
Forecast(12)
signifies a horizon length of12
.Thanks!