business-science / modeltime

Modeltime unlocks time series forecast models and machine learning in one framework
https://business-science.github.io/modeltime/
Other
540 stars 85 forks source link

Modeltime Ecosystem Roadmap: New Algorithms & Models #5

Open mdancho84 opened 4 years ago

mdancho84 commented 4 years ago

Modeltime Ecosystem Roadmap

The modeltime project roadmap tracks the overall development of the Modeltime Ecosystem of forecasting packages. Modeltime is a cutting-edge ecosystem for forecasting using strategies and best practices that won or placed highly in major forecasting competitions. We have a state-of-the-art Time Series Forecasting Course (DS4B 203-R) that teaches Machine Learning, Deep Learning, and Feature Engineering for Time Series. Take this course to become the forecasting expert for your organization.

Forecasting Approaches

Ensembles (Stacking, Averaging)

Please refer to modeltime.ensemble R package: https://business-science.github.io/modeltime.ensemble/

Forecast

These algorithms are provided in the base modeltime package. Refer to included models in the model list: https://business-science.github.io/modeltime/articles/modeltime-model-list.html

GluonTS (Deep Learning)

Please refer to modeltime.gluonts R package: https://github.com/business-science/modeltime.gluonts

Autoregressive (Recursive) Forecasting

Recursive forecasting is required when Lags of Features < Forecast Horizon. Please refer to the recursive() function that allows any model to be converted into a recursive prediction model: https://business-science.github.io/modeltime/reference/recursive.html

Resampling & Backtesting

Hyper Parameter Tuning & Parallel Processing

Global Baseline Models

Refer to baseline algorithms #37

H2O

This project is being managed via modeltime.h2o: https://github.com/business-science/modeltime.h2o

General Additive Models (GAMs)

GARCH Models

Refer to garchmodels (Website, GitHub).

Bayesian Models

Refer to bayesmodels (Website, GitHub)

Boosted Models: CatBoost, LightGBM

Refer to boostime (GitHub).

Conformal Predictions

Vector Autoregression (VAR)

Hierarchical Time Series

Modeltime Targets

Spark: Distributed Compute

Investigate the possibility of adding Spark backend to improve scalability of modeltime, specifically for nested (iterative) forecasting.

Facebook Neural Prophet

LinkedIn Greykite

Uber Orbit

Facebook Kats

Temporal Hierachical Forecasting (THIEF)

Smooth

Investigate smooth Library. https://github.com/config-i1/smooth The smooth library has several benefits including:

These methods have shown promising results in comparison to Facebook Prophet.

Follow #119.

Merlion

Pytorch Forecasting

edgBR commented 4 years ago

Dear @mdancho84,

I see a lot of parallelism between model time and the fable package. Even that fable is designed for multiple time series models I believe that sharing some of the structures could be very beneficial for both projects. I have noticed that for instance you have a model time table. Would it be possible that you look into the mable (mdl_df) class from fable?

BR /E

mdancho84 commented 4 years ago

Yes, I agree there are parallels. I'm not sure what specifically to look at compared to fable. I do plan to incorporate most of the forecast package functionality into modeltime. Scalable time series is something else I will look into down the road, but it becomes more complex when tuning is involved.

edgBR commented 4 years ago

Hi @mdancho84

I think the main issue with tunning is that you will have a conflict when you are running fable in parallel as you will not have control over the forked processes that the HPO needs. However I am not an expert in the topic but I for sure understand the challenges here.

However I see now 3 main packages to perform forecasting in R:

forecastML plans to be compatible with fable and there is even a vignette in order to explain reconciliation forecasts.

I think that it would be amazing if all of this packages become part of a modern time series forecasting ecosystem.

BR /E

mdancho84 commented 4 years ago

I’m a big fan of fable, I just couldn’t get it to work for anything using machine learning and deep learning.

The tidymodels system is an amazing evolution of caret that is focused on integration and standardization of machine learning. This makes it much easier to control and simplify the vast ML & DL ecosystem. This is why it only takes minimal lines of code to go from idea to execution. Modeltime and timetk simply add a workflow for forecasting on top of the excellent tidymodels ecosystem.

I don't know if there will be one framework that will consolidate all of these great ideas. I agree it would be amazing.

My goal is to first and foremost help those that want to create high-performance forecasts have the tools available to do so in as few lines of code as possible.

mdancho84 commented 4 years ago

TBATS Model TBATS is added to the seasonal_reg(), seasonal time series regression model specification.

seasonal_reg(
    seasonal_period_1 = 7,
    seasonal_period_2 = 30,
    seasonal_period_3 = 365
) %>%
    set_engine("tbats")
mdancho84 commented 3 years ago

Deep Learning (RNN / LSTM) with Modeltime GluonTS

The modeltime.gluonts library has been created to handle Deep Learning by integrating the Time Series Deep Learning Library, GluonTS. Resources:

spsanderson commented 2 years ago

I don't recall if holtwinters works with modeltime, does it?

mdancho84 commented 2 years ago

I don't recall if holtwinters works with modeltime, does it?

Yes, Holt-Winters is a special form of ETS. So you can use exp_smoothing() to make a holt winters model.

mdancho84 commented 1 year ago

Added Conformal Interval Evaluation #173