Learn R Programming

tsensembler (version 0.1.0)

ADE-class: Arbitrated Dynamic Ensemble

Description

Arbitrated Dynamic Ensemble (ADE) is an ensemble approach for adaptively combining forecasting models. A metalearning strategy is used that specializes base models across the time series. Each meta-learner is specifically designed to model how apt its base counterpart is to make a prediction for a given test example. This is accomplished by analysing how the error incurred by a given learning model relates to the characteristics of the data. At test time, the base-learners are weighted according to their degree of competence in the input observation, estimated by the predictions of the meta-learners.

Arguments

Slots

base_ensemble

object of class base_ensemble-class. It contains the base models used that can be used for predicting new data or forecasting future values;

meta_model

a list containing the meta models, one for each base model. The meta-models are random forests;

form

formula;

specs

object of class model_specs-class. Contains the parameter setting information for training the base models;

lambda

window size. Number of observations to compute the recent performance of the base models, according to the committee ratio omega. Essentially, the top omega models are selected and weighted at each prediction instance, according to their performance in the last lambda observations. Defaults to 50 according to empirical experiments;

omega

committee ratio size. Essentially, the top omega * 100 percent of models are selected and weighted at each prediction instance, according to their performance in the last lambda observations. Defaults to .5 according to empirical experiments;

select_best

Logical. If true, at each prediction time, a single base model is picked to make a prediction. The picked model is the one that has the lowest loss prediction from the meta models. Defaults to FALSE;

all_models

Logical. If true, at each prediction time, all base models are picked to make a prediction. The models are weighted according to their predicted loss and the aggregation function. Defaults to FALSE;

aggregation

Type of aggregation used to combine the predictions of the base models. The options are:

softmax

default

erfc

the complementary Gaussian error function

linear

a linear scaling

sequential_reweight

Besides ensemble heterogeneity we encourage diversity explicitly during the aggregation of the output of experts. This is achieved by taking into account not only predictions of performance produced by the arbiters, but also the correlation among experts in a recent window of observations.

recent_series

the most recent lambda observations.

out_of_bag

Out of bag observations used to train arbiters.

meta_model_type

meta model to use -- defaults to random forest

References

Cerqueira, Vitor; Torgo, Luis; Pinto, Fabio; and Soares, Carlos. "Arbitrated Ensemble for Time Series Forecasting" to appear at: Joint European Conference on Machine Learning and Knowledge Discovery in Databases. Springer International Publishing, 2017.

V. Cerqueira, L. Torgo, and C. Soares, <U+201C>Arbitrated ensemble for solar radiation forecasting,<U+201D> in International Work-Conference on Artificial Neural Networks. Springer, Cham, 2017, pp. 720<U+2013>732

See Also

model_specs-class for setting up the ensemble parameters for an ADE model; predict for the method that predicts new held out observations; update_weights for the method used to update the weights of an ADE model between successive predict or forecast calls; update_ade_meta for updating (retraining) the meta models of an ADE model; update_base_models for the updating (retraining) the base models of an ADE ensemble (and respective weights); ade_hat-class for the object that results from predicting with an ADE model; and update_ade to update an ADE model, combining functions update_base_models, update_meta_ade, and update_weights.

Examples

Run this code
# NOT RUN {
specs <- model_specs(
  learner = c("bm_ppr", "bm_glm", "bm_mars"),
  learner_pars = list(
    bm_glm = list(alpha = c(0, .5, 1)),
    bm_svr = list(kernel = c("rbfdot", "polydot"),
                  C = c(1, 3)),
    bm_ppr = list(nterms = 4)
  )
)

data("water_consumption")
train <- embed_timeseries(water_consumption, 5)
train <- train[1:300, ] # toy size for checks

model <- ADE(target ~., train, specs)

# }

Run the code above in your browser using DataLab