MLBazaar / BTB

A simple, extensible library for developing AutoML systems
https://mlbazaar.github.io/BTB/
MIT License
171 stars 41 forks source link

Implement GaussianCopulaProcessMetaModel #208

Closed pvk-developer closed 4 years ago

pvk-developer commented 4 years ago

Description

Implement the GaussianCopulaProcessMetaModel, a tuner that was present on the previous version of BTB, adapting this to the new structure.

The GaussianCopulaProcessMetaModel uses an underlying GaussianProcessRegressor from sklearn.gaussian_process applying copulas.univariate.Univariate transformations to the input data and afterwards reverts it for the predictions.

During the fit process, this metamodel trains a univariate copula for each hyperparameter to then compute the cumulative distribution of these. Once the cumulative distribution has been calculated, we calculate the inverse of the normal cumulative distribution using scipy.stats.norm and use these transformations to train the GaussianProcessRegressor model.

When predicting the output value, an inverse of the normal cumulative distribution is computed to the normal cumulative distribution, using the previously trained univariate copula with the input data of the score.