Skip to main content

MetaRL-based Estimator using Task-encodings for AutoML

Project description

META Learn

MetaRL-based Estimator using Task-encodings for Automated machine Learning

META Learn is a deep learning approach to automated machine learning that parameterizes the API of machine learning software as a sequence of actions to select the hyperparameters of a machine learning pipeline in an end-to-end fashion, from raw data representation, imputation, normalizing, feature representation, and classification/regression. Currently the sklearn API is the only supported ML framework.

Why?

As the diversity of data and machine learning use cases increases, we need to accelerate and scale the process of training performant machine learning systems. We'll need tools that are adaptable to specific problem domains, datasets, and the (sometimes non-differentiable) performance metrics that we're trying to optimize. Supervised learning of classification and regression tasks given a task distribution of small to medium datasets provides an promising jumping off platform for programmatically generating a reinforcement learning environment for automated machine learning (AutoML).

Installation

install metalearn library:

pip install -e .

then you can run an experiment with the metalearn cli.

# run an experiment with default values
$ metalearn run experiment

Running an experiment with a configuration file

Alternatively, you can create an experiment configuration file to run your experiment.

# create experiment config file
$ metalearn create config my_experiment config/local --description "my experiment"

# output:
# wrote experiment config file to config/local/experiment_2018-37-25-21:37:11_my_experiment.yml

edit the config file parameters section to the set of parameters that you want to train on, then run the experiment with

$ metalearn run from-config config/local/experiment_2018-37-25-21:37:11_my_experiment.yml

run an experiment using floydhub:

$ floyd_scripts/train-metalearn.sh path/to/config/file 'optional job run message'

Relevant Work

The Combined Algorithm Selection and Hyperparameter optimization (CASH) problem is an important one to solve if we want to effectively scale and deploy machine learning systems in real-world use cases, which often deals with small (< 10 gb) to medium size (10 - 100 gb) data.

CASH is the problem of searching through the space of all ML frameworks, defined as an Algorithm A and a set of relevant hyperparameters lambda and proposing a set of models that will perform well given a dataset and a task.

In order to solve this problem, previous work like autosklearn uses a Bayesian Optimization techniques SMAC with an offline meta- learning "warm-start" step using euclidean distance to reduce the search space of ML frameworks. This meta-learning step was done by representing the datasets with metadata features (e.g. number of features, skew, mean, variance, etc.) to learn representations of the data space that perform well with respect to the ML framework selection task.

Neural Architecture Search is another approach to the CASH problem, where a Controller network proposes "child" neural net architectures that are trained on a training set and evaluated on a validation set, using the validation performance R as a reinforcement learning reward signal to learn the best architecture proposal policy.

Contributions

The contributions of the META Learn project are two-fold: it builds on the neural architecture search paradigm by formalating the output space of the Controller as a sequence of tokens conditioned on the space of possible executable frameworks. The scope of this project is to define a framework, expressed as a set of hyperparameters, that can be evaluated by a machine learning framework, like sklearn, which evaluates to an instantiated sklearn Pipeline. Once defined, it can be fitted on a training set and evaluated on a validation set of a particular dataset D.

Following the Neural Architecture scheme, META Learn uses the REINFORCE algorithm to compute the policy gradient used to update the Controller in order to learn a policy for proposing good frameworks that are able to achieve high validation set performance.

The second contribution of this project is that it proposes a conditional ML framework generator by extending the Controller network to have an encoder network that takes as input metadata about the dataset D (e.g. number of instances, number of features). The output of the encoder network would be fed into the decoder network, which proposes an ML framework. Therefore, we can condition the output of the decoder network metadata on D to propose frameworks that depend on the encoded dataset representation.

Training Algorithm

The environment is a distribution of k supervised learning tasks, consisting of a pair (X, y) of features and targets, respectively. At the beginning of an episode, the environment samples one task and for i iterations produces sample splits (X_train, y_train, X_validation, y_validation) drawn from the task dataset.

The MetaLearnController receives the current task state s via metafeatures associated the task, e.g. # of training samples, # of features, target type, #of continuous features, #of categorical features, etc.

Given the task state, the controller generates ML frameworks over a state space of algorithms and hyperparameter values. The controller can be viewed as a policy approximator, which selects actions based on some pre-defined AlgorithmSpace, representated as a direct acyclic graph where each node contains a set of hyperparameter values to choose from. The controller traverses this graph via a sequential decoder by selecting hyperparameters via softmax classifiers, where certain actions may remove certain edges from the graph. This enforces incompatible hyperparameter configurations.

For example, the algorithm space for a possible sklearn pipeline would consist of the following components:

  • categorical encoder (e.g. OneHotEncoder)
  • categorical encoder hyperparameters
  • imputer (e.g. SimpleImputer)
  • imputer hyperparameters
  • rescaler (e.g. StandardScaler)
  • rescaler hyperparameters
  • feature processor (e.g. PCA)
  • feature processor hyperparameters
  • classifier/regressor (e.g. LogisticRegression, LinearRegression)
  • classifier/regressor hyperparameters

When the controller reaches a terminal node in algorithm space, the environment evalutes the selected ML framework and produces a validation score that the controller uses as a reward signal. Validation performance is calibrated such that a better score produces higher rewards. Using the REINFORCE policy gradient method, the controller tries to find the optimal policy that maximizes validation performance over the task distribution.

Analyses

The ./analysis subfolder contains jupyter notebooks that visualize the performance of the cash controller over time. Currently there are 5 analyses in the project analysis subfolder:

  • 20180715_metalearn_controller_analysis.ipynb: a basic interactive analysis of a single job's outputs.
  • 20180809_experiments_jobs_150_151.ipynb: analyzes baseline performance based on correct action selection implementation. For more info on the bug, see here.
  • 20180902_experiments_entropy_jobs_166-175.ipynb: analyzes tuning experiment after entropy coefficient was introduced in the loss function.
  • 20180930_experiments_regression_195.ipynb: analyzes a pure regression metalearn controller.
  • 20181003_experiments_regression_197.ipynb: analyzes a pure regression controller with two sets of entropy coef settings.
  • 20191111_metalearn_openml_cc18_benchmark.ipynb: evaluate the metalearn controller's ability to learn from an internal RL algorithm implemented within the RNN loop.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

meta-ml-0.0.24.tar.gz (67.4 kB view details)

Uploaded Source

Built Distribution

meta_ml-0.0.24-py3-none-any.whl (92.9 kB view details)

Uploaded Python 3

File details

Details for the file meta-ml-0.0.24.tar.gz.

File metadata

  • Download URL: meta-ml-0.0.24.tar.gz
  • Upload date:
  • Size: 67.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/44.0.0.post20200102 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.3

File hashes

Hashes for meta-ml-0.0.24.tar.gz
Algorithm Hash digest
SHA256 ba007394054115a4cbefb3e5b66f1a2f94eb89cd3abc3b3943a11e7e165eca83
MD5 6a35998ead0972ff6e4a4001f8806cc3
BLAKE2b-256 4d099b5bfdc0c5ec7cb9ede5b526d1cb7e6a5cdd68c844e2a1122db63f8e08aa

See more details on using hashes here.

File details

Details for the file meta_ml-0.0.24-py3-none-any.whl.

File metadata

  • Download URL: meta_ml-0.0.24-py3-none-any.whl
  • Upload date:
  • Size: 92.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/44.0.0.post20200102 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.3

File hashes

Hashes for meta_ml-0.0.24-py3-none-any.whl
Algorithm Hash digest
SHA256 d738483f1e82cc01b44358ff0bab3057d505d7f33c9b1a046d4bf30fa21f7e16
MD5 272465af541a2941763403176b927288
BLAKE2b-256 0dd844a5b8b6a7275cd3fe05e35287c4625a426e66f8cc4f2abe796dc01170e5

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page