Olivier Grisel

2010-06-29 20:05:50 UTC

Hi all again,

It would be great if we could setup a standard API for hyper-parameter

admissible ranges definitions and settings. That would allow us to to

perform automated parameter tuning with. For instance one could have:

MyClassyClassifier(object):

hyperparameters = {

'l1': {'type': float, 'range': [0, 1e-3, 1e-2, 1e-1, 1, 1e1, 1e2, 1e3]},

'hidden_layer_units': {'type': int, 'range': 'range': [10, 50,

100, 500]},

'intercept': {'type': bool},

'normalize': {'type': bool},

}

def __init__(self, l1=10, hidden_layer_units=100, normalize=True,

intercept=True):

pass

def fit(self, X, y):

return self

def predict(self, X):

return -1

And then have a multiprocessing pool executor that queues cross

validation jobs for any combinations of the parameters (like the

grid_search.py script of the libsvm project. I think such a general

API + a default autotuner implementation would lower the barrier to

entry for newcomers and make scikits.learn concretely reach the goal

of "machine learning without learning the machinery".

Any opinion?

It would be great if we could setup a standard API for hyper-parameter

admissible ranges definitions and settings. That would allow us to to

perform automated parameter tuning with. For instance one could have:

MyClassyClassifier(object):

hyperparameters = {

'l1': {'type': float, 'range': [0, 1e-3, 1e-2, 1e-1, 1, 1e1, 1e2, 1e3]},

'hidden_layer_units': {'type': int, 'range': 'range': [10, 50,

100, 500]},

'intercept': {'type': bool},

'normalize': {'type': bool},

}

def __init__(self, l1=10, hidden_layer_units=100, normalize=True,

intercept=True):

pass

def fit(self, X, y):

return self

def predict(self, X):

return -1

And then have a multiprocessing pool executor that queues cross

validation jobs for any combinations of the parameters (like the

grid_search.py script of the libsvm project. I think such a general

API + a default autotuner implementation would lower the barrier to

entry for newcomers and make scikits.learn concretely reach the goal

of "machine learning without learning the machinery".

Any opinion?

--

Olivier

http://twitter.com/ogrisel - http://github.com/ogrisel

Olivier

http://twitter.com/ogrisel - http://github.com/ogrisel