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.
base_ensembleobject of class base_ensemble-class.
It contains the base models used that can be used for predicting
new data or forecasting future values;
meta_modela list containing the meta models, one for each base model. The meta-models are random forests;
formformula;
specsobject of class model_specs-class. Contains
the parameter setting information for training the
base models;
lambdawindow 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;
omegacommittee 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_bestLogical. 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_modelsLogical. 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;
aggregationType of aggregation used to combine the predictions of the base models. The options are:
default
the complementary Gaussian error function
a linear scaling
sequential_reweightBesides 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_seriesthe most recent lambda observations.
out_of_bagOut of bag observations used to train arbiters.
meta_model_typemeta model to use -- defaults to random forest
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