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.
ADE(form, data, specs, lambda = 50, omega = 0.5, select_best = FALSE,
all_models = FALSE, aggregation = "linear",
sequential_reweight = FALSE, meta_loss_fun = ae,
meta_model_type = "randomforest", num_cores = 1)
formula;
data to train the base models
object of class model_specs-class
. Contains
the parameter setting information for training the
base models;
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;
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;
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;
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;
Type of aggregation used to combine the predictions of the base models. The options are:
default
the complementary Gaussian error function
a linear scaling
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.
Besides
meta model to use -- defaults to random forest
A numeric value to specify the number of cores used to train base and meta models. num_cores = 1 leads to sequential training of models. num_cores > 1 splits the training of the base models across num_cores cores.
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
model_specs-class
for setting up the ensemble parameters
for an ADE model; forecast
for the forecasting method
that uses an ADE model for forecasting future values;
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.
# 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