Proposal Description
AI services (New or Existing)
Solution Description
Our solution is not to reinvent the wheel by building another fancy Transformer or GPT-whatever model, and spend a cool billion dollars in doing so. Rather, it is to take various tried-and-true forecasting models out there, both statistical and ML-based, and have them complement each other to produce a more robust and generalizable forecast. This is called the “wisdom of crowds” approach. It is analogous to assembling a kind of forecasting Justice League.
SIBYL’s service will use a stacked generalization (or stacking for short) architecture in particular. Stacking is an ensemble method that first trains a diverse amount of base models, then their predictions are aggregated by a meta-model, who finally produces the composite output. Here is our tentative architecture design, which will be finalized after the M1 milestone:
This stacked generalization (
) first contains the base models (
). They consist of, but are not limited to, the following time-series friendly or compatible models:
- Seasonal-Naïve
- Auto-ARIMA
- Holt-Winters (Exponential Smoothing)
- LASSO
- LightGBM
- NeuralProphet
- LSTM-based
The Sybils are a mix of statistical, machine/deep learning, and
. They cover time-series datasets of different sizes, frequencies, variables, and other temporal characteristics. The statistical models cover simpler datasets, while hybrid and deep learning models cover the more complex ones, including ones with exogenous variables (or covariates). The SIBYL service will automatically preprocess the time-series datasets for the models and perform model selection to preemptively filter out models that are clearly unsuitable for training the given time-series.
The meta-model (
) consists of one or a hybrid of the following:
- Weighted Average (WA)
- Linear Regression (LR)
- Blending
In the current Delphi, Pythia is a rule-based algorithm that weighs the trained outputs ("prophecies") from Sybils based on their performance metrics on the Out-of-Sample (OOS) test set. It will then use these prophecies and their weights to create the final composite output ("oracle"). This oracle is the forecast the user will get after running the SIBYL service.
This service will be implemented in Python 3. We will use Scikit-learn and Statsmodel libraries for the statistical models and PyTorch Lightning for the deep learning/neural network ones. We will also consider utilizing existing marketplace services and develop the remaining Sybils to be built-in within the SIBYL service. Finally, we plan to deploy this service on an AWS cloud instance (or serverless) but may also consider using a more decentralized computing environment like Nunet.
Description of service related to this proposal
SIBYL has one service with two primary API functions for users to call:
- Train: users input training dataset for SIBYL to train with its stacking architecture Delphi, and outputs model parameters back to the user in JSON or another compatible file format.
- Predict: user inputs the training dataset and model parameters to SIBYL. SIBYL then outputs the model forecast or oracle back to the user.
See the attached .pdf for a simple but illustrative example of how an AGIX crypto trader can use this service.
External Services
Here are the external services on (or will be on) SNET’s marketplace that may be utilized for this project:
- NeuralProphet: Use this NeuralProphet service as the hybrid Sybil. See our separate onboarding NeuralProphet proposal
in DF2 - Pool B [existing AI services].
-
: Potentially use these services as Facebook's Prophet and LSTM Sybils instead of having them built into the SYBIL service.
-
: Potentially utilize the service’s Dynamic Coupled Variational Autoencoder (C-VAE) for time-series data generation to
the input data before training.
AI Services