Forecast any time series with seven machine learning models that see the data through intuitionistic fuzzy sets . Each past value enters the model together with its degree of membership and non-membership in fuzzy clusters, so the model also learns from the uncertainty (hesitation) in the data.
Classical fuzzy sets give each value a single membership degree. Intuitionistic fuzzy sets (Atanassov, 1986) add a separate non-membership degree, and the gap between the two measures hesitation. Feeding these degrees to a machine learning model, together with the lagged values, gives it a richer description of where each observation lies in the range of the series.
Feed-forward neural network with one hidden layer; several networks from different random starts are averaged.
Bagged regression trees with random feature selection at every split (Breiman, 2001).
Epsilon-insensitive support vector regression with a kernel (Drucker et al., 1997).
Regularised gradient-boosted regression trees (Chen and Guestrin, 2016).
Histogram-based, leaf-wise gradient boosting (Ke et al., 2017).
AdaBoost.R2 (Drucker, 1997): regression trees fitted to re-weighted samples, combined by weighted median.
Gradient boosting with ordered boosting and symmetric (oblivious) trees (Prokhorenkova et al., 2018).
Every hyperparameter, including the lag order, can be fixed or searched over a min-max-step range with time-ordered hold-out or cross-validation.
1. Intuitionistic fuzzy c-means (IFCM). The training values are grouped into \(C\) clusters with centres \(v_k\). The membership degree of a value \(x\) in cluster \(k\) is the fuzzy c-means degree
and the non-membership and hesitation degrees come from the Yager generator (\(0 < \alpha \le 1\); \(\alpha = 1\) gives ordinary fuzzy sets):
Cluster centres are updated with the hesitation-augmented memberships \(\mu^{*} = \mu + \pi\) (Chaira, 2011) until convergence.
2. Inputs. For a target \(y_t\) and lag order \(L\), the input vector holds the lagged values and their degrees in every cluster:
3. Learner. A machine learning model \(\hat{y}_t = f(\mathbf{x}_t)\) is trained on the training set; \(f\) is a neural network, random forest, support vector regression, XGBoost, LightGBM, AdaBoost.R2 or CatBoost. Clustering and scaling use only the training data, and only past values enter the inputs, so the test forecasts never use information from the values being forecast.
Follow the steps from left to right. Every choice has a sensible default.
| Date | Y1 | Y2 | ... |
|---|---|---|---|
| 2015-01-01 | 768.20 | 1266.65 | ... |
| 2015-02-01 | 928.81 | 1178.63 | ... |
| ... | ... | ... | ... |
Sheets: Accuracy, Parameters, Test_Predictions, Training_Fitted, Tuning_History, IFCM_Centres, Feature_Importance, Settings, Data_Used.
Download Excel workbookOne row per run with the selected hyperparameters and training / test accuracy.
Download comparison (Excel)Upload a series, split it, pick a model, set the hyperparameters and run. Results can be compared across models and downloaded.
| Date | Y1 | Y2 | ... |
|---|---|---|---|
| 2015-01-01 | 768.20 | 1266.65 | ... |
| 2015-02-01 | 928.81 | 1178.63 | ... |
A sample file (Excel and CSV) is available on Model > 1. Upload data, together with a 'Load sample data' button.
A model marked 'package not installed' needs its R package; see install_packages.R.
| Model | Hyperparameter | Default single value | Default range (min, max, step) | Meaning |
|---|---|---|---|---|
| All models | Lag order (L) | 1 | 1, 12, 1 | Number of past values used as inputs. |
| IFANN | Hidden neurons (Size) | 4 | 2, 8, 2 | Number of neurons in the hidden layer. (positive integer) |
| IFANN | Weight decay | 0.01 | 0.01, 0.09, 0.04 | L2 penalty on the network weights. (number >= 0) |
| IFRF | Number of trees (Ntree) | 500 | 100, 500, 200 | Trees in the forest. (positive integer) |
| IFRF | Mtry (proportion of inputs) | 0.33 | 0.2, 1, 0.4 | Share of inputs tried at each split, in (0, 1]. (proportion in (0, 1]) |
| IFRF | Minimum node size | 5 | 1, 9, 4 | Minimum size of terminal nodes. (positive integer) |
| IFSVR | Cost (C) | 1 | 1, 10, 3 | Penalty for errors outside the epsilon tube. (number > 0) |
| IFSVR | Gamma | 0.05 | 0.01, 0.1, 0.03 | Kernel width parameter (radial, polynomial, sigmoid). (number > 0) |
| IFSVR | Epsilon | 0.1 | 0.05, 0.25, 0.1 | Width of the insensitive tube (on the 0-1 scaled target). (number >= 0) |
| IFXGBoost | Boosting rounds | 200 | 100, 300, 100 | Number of trees. (positive integer) |
| IFXGBoost | Learning rate (eta) | 0.1 | 0.05, 0.25, 0.1 | Shrinkage of each tree. (proportion in (0, 1]) |
| IFXGBoost | Maximum tree depth | 4 | 2, 6, 2 | Depth of each tree. (positive integer) |
| IFXGBoost | Row subsample | 0.8 | 0.6, 1, 0.2 | Share of rows used for each tree. (proportion in (0, 1]) |
| IFLightGBM | Boosting rounds | 200 | 100, 300, 100 | Number of trees. (positive integer) |
| IFLightGBM | Learning rate | 0.1 | 0.05, 0.25, 0.1 | Shrinkage of each tree. (proportion in (0, 1]) |
| IFLightGBM | Number of leaves | 15 | 7, 31, 8 | Maximum leaves per tree. (positive integer) |
| IFLightGBM | Minimum data in leaf | 5 | 3, 9, 3 | Minimum observations in a leaf. (positive integer) |
| IFAdaBoost | Number of estimators | 100 | 50, 150, 50 | Maximum boosting iterations. (positive integer) |
| IFAdaBoost | Learning rate | 1 | 0.5, 1.5, 0.5 | Contribution of each tree. (number > 0) |
| IFAdaBoost | Maximum tree depth | 3 | 2, 4, 1 | Depth of each regression tree. (positive integer) |
| IFCatBoost | Iterations | 300 | 100, 500, 200 | Number of trees. (positive integer) |
| IFCatBoost | Learning rate | 0.1 | 0.05, 0.25, 0.1 | Shrinkage of each tree. (proportion in (0, 1]) |
| IFCatBoost | Tree depth | 4 | 2, 6, 2 | Depth of the symmetric trees. (positive integer) |
| IFCatBoost | L2 leaf regularisation | 3 | 1, 5, 2 | L2 penalty on leaf values. (number > 0) |
This web application was developed at ICAR-Indian Agricultural Statistics Research Institute, New Delhi.