Fold
FOLD
Fast Adaptive Time Series ML Engine
This is an internal project - documentation is not updated anymore and substantially differ from the current API.
Explore the docs »
The Adaptive ML Engine that lets you build, deploy and update Models easily. An order of magnitude speed-up, combined with flexibility and rigour.
Main Features
- 10x faster Adaptive Backtesting - What does that mean?
- Composite Models made Adaptive - What does that mean?
- Distributed computing - Why is this important?
- Update deployed models (coming in May) - Why is this important?
Installation
-
Prerequisites:
python >= 3.8
andpip
-
Install from pypi:
Quickstart
You can quickly train your chosen models and get predictions by running:
from sklearn.ensemble import RandomForestRegressor
from statsforecast.models import ARIMA
from fold import ExpandingWindowSplitter, train_evaluate
from fold.composites import Ensemble
from fold.transformations import OnlyPredictions
from fold.utils.dataset import get_preprocessed_dataset
X, y = get_preprocessed_dataset(
"weather/historical_hourly_la", target_col="temperature", shorten=1000
)
pipeline = [
Ensemble(
[
RandomForestRegressor(),
ARIMA(order=(1, 1, 0)),
]
),
OnlyPredictions(),
]
splitter = ExpandingWindowSplitter(initial_train_window=0.2, step=0.2)
scorecard, prediction, trained_pipelines, _, _ = train_evaluate(pipeline, X, y, splitter)
(If you install krisi
by running pip install krisi
you get an extended report back, rather than a single metric.)
Fold is different
-
Adaptive Models and Backtesting at lightning speed.
→ fold allows to simulate and evaluate your models like they would have performed, in reality/when deployed, with clever use of paralellization and design. -
Create composite models: ensembles, hybrids, stacking pipelines, easily.
→ Underutilized, but the easiest, fastest way to increase performance of your Time Series models. -
Built with Distributed Computing in mind.
→ Deploy your research and development pipelines to a cluster withray
, and usemodin
to handle out-of-memory datasets (full support for modin is coming in April). -
Bridging the gap between Online and Mini-Batch learning.
→ Mix and matchxgboost
with ARIMA, in a single pipeline. Boost your model's accuracy by updating them on every timestamp, if desired. -
Update your deployed models, easily, as new data flows in.
→ Real world is not static. Let your models adapt, without the need to re-train from scratch.
Examples, Walkthroughs and Blog Posts
Name | Type | Dataset Type | Docs Link | Colab |
---|---|---|---|---|
⚡️ Core Walkthrough | Walkthrough | Energy | Notebook | Colab |
🚄 Speed Comparison of Fold to other libraries | Walkthrough | Weather | Notebook | Colab |
📚 Example Collection | Example | Weather & Synthetic | Collection Link | - |
🖋️ Why we ended up building an Adaptive ML engine for Time Series | Blog | Public Release Blog Post | Blog post on Applied Exploration | - |
Core Features
- Supports both Regression and Classification tasks.
- Online and Mini-batch learning.
- Feature selection and other transformations on an expanding/rolling window basis
- Use any scikit-learn/tabular model natively!
- Use any univariate or sequence models (wrappers provided in fold-wrappers).
- Use any Deep Learning Time Series models (wrappers provided in fold-wrappers).
- Super easy syntax!
- Probabilistic foreacasts (currently, for Classification, full support coming in April).
- Hyperparemeter optimization / Model selection. (coming in early April!)
What is Adaptive Backtesting?
It's like classical Backtesting / Time Series Cross-Validation, plus: Inside a test window, and during deployment, fold provides a way for models to update their parameters or access the last value. Learn more
Our Open-core Time Series Toolkit
Explore our Commercial License options here
Contribution
Submit an issue or reach out to us on info at dream-faster.ai for any inquiries.
Licence & Usage
We want to bring much-needed transparency, speed and rigour to the process of creating Time Series ML pipelines, while also building a sustainable business, that can support the ecosystem in the long-term. Fold's licence is inbetween source-available and a traditional commercial software licence. It requires a paid licence for any commercial use, after the initial, 30 day trial period.
We also want to contribute to open research by giving free access to non-commercial, research use of fold
.
Limitations
- No intermittent time series support, very limited support for missing values.
- No hierarchical time series support.