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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | ba007394054115a4cbefb3e5b66f1a2f94eb89cd3abc3b3943a11e7e165eca83 |
|
MD5 | 6a35998ead0972ff6e4a4001f8806cc3 |
|
BLAKE2b-256 | 4d099b5bfdc0c5ec7cb9ede5b526d1cb7e6a5cdd68c844e2a1122db63f8e08aa |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | d738483f1e82cc01b44358ff0bab3057d505d7f33c9b1a046d4bf30fa21f7e16 |
|
MD5 | 272465af541a2941763403176b927288 |
|
BLAKE2b-256 | 0dd844a5b8b6a7275cd3fe05e35287c4625a426e66f8cc4f2abe796dc01170e5 |