-
Notifications
You must be signed in to change notification settings - Fork 48
FinnTS Revised Architecture
Aadharsh Kannan edited this page Aug 5, 2021
·
3 revisions
FinnTS exposes a single forecast_time_series function that uses ensemble techniques to try out different time series models and produce a single reconciliable function. It requires one to input data in a particular format (details). This document provides a brief overview of the individual code components that build up forecast_time_series.
- Load environment
- Verify and validate forecasting inputs
- Configure forecasting run
- Data preparation
- Model Fitting (per combo)
- Model factory
- Recipe factory
- Job scheduler
- Sequential
- Parallel (Ownbox, and Azure Batch)
- Model selection
- Best Averages
- Ensembles
- Backtesting & Model Results
- Forecasting Reconciliation
| model | simple_select | step_mutate | time_series_signature | mutate_adj_half | rm_date | rm_date_adj | rm_date_adj_num | step_zv | step_nzv | norm_date_adj_year | dummy_one_hot | character_factor | center | scale |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| arima_boost | yes | yes | yes | yes | yes | yes | yes | yes | ||||||
| cubist (ensemble) | yes | yes | yes | yes | yes | yes | yes | |||||||
| cubist (single) | yes | yes | yes | yes | yes | yes | yes | |||||||
| glmnet (ensemble) | yes | yes | yes | yes | yes | yes | yes | yes | yes | |||||
| glmnet (single) | yes | yes | yes | yes | yes | yes | yes | yes | yes | |||||
| mars | yes | yes | yes | yes | yes | yes | yes | |||||||
| nnetar_xregs | yes | yes | yes | yes | yes | yes | yes | yes | ||||||
| prophet_boost | yes | yes | yes | yes | yes | yes | yes | yes | ||||||
| prophet_xregs | yes | yes | yes | yes | yes | yes | yes | |||||||
| svm_poly (ensemble) | yes | yes | yes | yes | yes | yes | yes | |||||||
| svm_poly (single) | yes | yes | yes | yes | yes | yes | yes | yes | ||||||
| svm_rbf (ensemble) | yes | yes | yes | yes | yes | yes | yes | |||||||
| svm_rbf (single) | yes | yes | yes | yes | yes | yes | yes | yes | ||||||
| tabnet | yes | yes | yes | yes | yes | |||||||||
| xgboost (ensemble) | yes | yes | yes | yes | yes | yes | yes | |||||||
| xgboost (single) | yes | yes | yes | yes | yes | yes | yes |
| model | code |
|---|---|
| simple_select | recipes::recipe(Target ~ ., data = train_data %>% dplyr::select(-Combo)) |
| step_mutate | recipes::step_mutate(Date_Adj = Date %m+% months(fiscal_year_start-1)) |
| time_series_signature | timetk::step_timeseries_signature(Date_Adj) |
| mutate_adj_half | recipes::step_mutate(Date_Adj_half_factor = as.factor(Date_Adj_half),Date_Adj_quarter_factor = as.factor(Date_Adj_quarter)) |
| rm_date | recipes::step_rm(matches(date_rm_regex_final), Date) |
| rm_date_adj_num | recipes::step_rm(matches(date_rm_regex_final), Date, Date_Adj) |
| rm_date_adj_num | recipes::step_rm(matches(date_rm_regex_final), Date, Date_Adj, Date_Adj_index.num) |
| step_zv | recipes::step_zv(recipes::all_predictors()) |
| step_nzv | recipes::step_nzv(recipes::all_predictors()) |
| norm_date_adj_year | recipes::step_normalize(Date_Adj_index.num, Date_Adj_year) |
| dummy_one_hot | recipes::step_dummy(recipes::all_nominal(), one_hot = one_hot) |
| character_factor | recipes::step_mutate_at(where(is.character), fn = ~as.factor(.)) |
| center | recipes::step_center(recipes::all_predictors()) |
| scale | recipes::step_scale(recipes::all_predictors()) |