ARM-Java

Java implementation of the Adaptive Regression by Mixing algorithm

View the Project on GitHub ignacioarnaldo/arm-java

Algorithm

ARM allows to fuse a set of models M according to an estimation of their accuracy. The fused model z obtained with ARM is a linear combination of the models . Given a test sample , the prediction issued by the fused model is the weighted average of model predictions

Thus, the fusion process consists of learning the weight for each model. Let be the size of the fusion training set, and be the number of models in the ensemble. Here, we assume that the errors for each model are normally distributed. We then use the variance in these errors to identify the weights by executing the following steps:

  1. Split randomly into two equally sized subsets
  2. For each model m, evaluate which is the maximum likelihood estimate of the variance of the errors
    Compute the sum of squared errors on
  3. Estimate the weights using:
  4. Repeat steps 1-3 for a fixed number of times. Average the weights from each iteration to get the final weights for the models.

Transformation for large r: for large values of r, the calculation of the weights encounters an underflow error. To avoid this problem we equivalently compute the weights using:


and

Authors and Contributors

This project is developed is by Ignacio Arnaldo (@ignacioarnaldo) of the Any-Scale Learning For All (ALFA) group at MIT. Contact us by email at iarnaldo@mit.edu

ALFA