autotuner

0.1.0 • Public • Published

Autotuner.js

Autotuner is a machine learning model selection and hyper-parameter tuning module. Uses a Bayesian optimization approach to pick most promising hyperparameters.

Getting Started

Install and use the package with Node:

npm install autotuner
var autotuner = require('autotuner');

Install and use the package with Bower:

bower install autotuner

Usage

We first define the parameter space. It is done with the Paramspace class. We add models to it by calling addModel(modelName, modelParameters) where modelName is a string model identifier, and modelParameters is an object where fields are parameter names and values are lists of possible parameter values.

Here is an example:

var p = new autotuner.Paramspace();
p.addModel('model1', {'param1' : [1,2,3], 'param2' : 10});
p.addModel('model2', {'param3' : [5,10,15]});

Then we use the parameter space to initialize the optimizer:

// Initialize the optimizer with the parameter space.
var opt = new autotuner.Optimizer(p.domainIndices, p.modelsDomains);
 
while (optimizing) {
    // Take a suggestion from the optimizer.
    var point = opt.getNextPoint();
    
    // We can extract the model name and parameters.
    var model = p.domain[point]['model'];
    var params = p.domain[point]['params'];
    
    // Train a model given the params and obtain a quality metric value.
    // ...
    
    // Report the obtained quality metric value.
    p.addSample(point, value);
}
 

Transfer learning

If we want to take advantage of the observed values from the previous optimization runs to improve our next optimization run, we need the Priors helper class.

// This object is created only once and kept across optimization runs.
var priors = new autotuner.Priors(p.domainIndices);

We then use this class in our optimization runs as follows:

// Use the mean and kernel from the Priors instance to
// initialize the optimizer. 
var opt = new autotuner.Optimizer(p.domainIndices, p.modelsDomains, priors.mean, priors.kernel);
 
// Regular optimization run.
while (optimizing) {
    var point = opt.getNextPoint();
    var model = p.domain[point]['model'];
    var params = p.domain[point]['params'];
    // ...
    p.addSample(point, value);
}
 
// Commit the observed points to the priors.
priors.commit(p.observedValues);

After commiting the observed values, the priors.mean and priors.kernel are updated with the observed values so we can use them to initialize the next optimization run.

Development

Pull and initialize:

git pull https://github.com/cytoai/autotuner.git
cd autotuner
npm install

To run tests:

npm test

To build the bundled autotuner.js script:

npm run-script build

Package Sidebar

Install

npm i autotuner

Weekly Downloads

1

Version

0.1.0

License

MIT

Unpacked Size

1.8 MB

Total Files

11

Last publish

Collaborators

  • bojan-karlas