From 96b2700ddb91b771fa97d3172d4edf6c17386324 Mon Sep 17 00:00:00 2001 From: HeinrichPeters Date: Wed, 3 Jul 2019 16:45:10 -0400 Subject: [PATCH 1/2] added HistGradientBoostingClassifier --- sklearnbot/config_spaces/__init__.py | 1 + .../config_spaces/hist_gradient_boosting.py | 72 +++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 sklearnbot/config_spaces/hist_gradient_boosting.py diff --git a/sklearnbot/config_spaces/__init__.py b/sklearnbot/config_spaces/__init__.py index e2cdc01..cbd3e44 100644 --- a/sklearnbot/config_spaces/__init__.py +++ b/sklearnbot/config_spaces/__init__.py @@ -9,4 +9,5 @@ import sklearnbot.config_spaces.random_forest import sklearnbot.config_spaces.sgd import sklearnbot.config_spaces.svc +import sklearnbot.config_spaces.hist_gradient_boosting from .bootstrap import get_available_config_spaces, get_config_space diff --git a/sklearnbot/config_spaces/hist_gradient_boosting.py b/sklearnbot/config_spaces/hist_gradient_boosting.py new file mode 100644 index 0000000..bc88c79 --- /dev/null +++ b/sklearnbot/config_spaces/hist_gradient_boosting.py @@ -0,0 +1,72 @@ +import ConfigSpace + + +def get_hyperparameter_search_space(seed): + """ + Histogram Gradient Boosting search space based on a best effort using the scikit-learn + implementation. + + Parameters + ---------- + seed: int + Random seed that will be used to sample random configurations + + Returns + ------- + cs: ConfigSpace.ConfigurationSpace + The configuration space object + """ + cs = ConfigSpace.ConfigurationSpace('sklearn.ensemble.HistGradientBoostingClassifier', seed) + + imputation = ConfigSpace.hyperparameters.CategoricalHyperparameter( + name='columntransformer__numeric__imputer__strategy', choices=['mean', 'median', 'most_frequent']) + + loss = ConfigSpace.hyperparameters.Constant(name='histgradientboostingclassifier__loss', value='auto') + + learning_rate = ConfigSpace.hyperparameters.UniformFloatHyperparameter( + name='histgradientboostingclassifier__learning_rate', lower=0.001, upper=1, default_value=1, log=True) + + max_iter = ConfigSpace.hyperparameters.UniformIntegerHyperparameter( + name='histgradientboostingclassifier__max_iter', lower=50, upper=500, default_value=100) + + max_leaf_nodes = ConfigSpace.hyperparameters.UniformIntegerHyperparameter( + name='histgradientboostingclassifier__max_leaf_nodes', lower=1, upper=256, default_value=31) + + max_depth = ConfigSpace.hyperparameters.UniformIntegerHyperparameter( + name='histgradientboostingclassifier__max_depth', lower=2, upper=20, default_value=None) + + min_samples_leaf = ConfigSpace.hyperparameters.UniformIntegerHyperparameter( + name='histgradientboostingclassifier__min_samples_leaf', lower=1, upper=20, default_value=20) + + l2_regularization = ConfigSpace.hyperparameters.UniformFloatHyperparameter( + name='histgradientboostingclassifier__l2_regularization', lower=1e-10, upper=1, default_value=0.0, log=True) + + max_bins = ConfigSpace.hyperparameters.UniformFloatHyperparameter( + name='histgradientboostingclassifier__max_bins', lower=1, upper=512, default_value=256) + + validation_fraction = ConfigSpace.UniformFloatHyperparameter( + name='histgradientboostingclassifier__validation_fraction', lower=0, upper=0.3, default_value=0.1) + + n_iter_no_change = ConfigSpace.UniformIntegerHyperparameter( + name='histgradientboostingclassifier__n_iter_no_change', lower=1, upper=2048, default_value=None) + + tol = ConfigSpace.UniformFloatHyperparameter( + name='histgradientboostingclassifier__tol', lower=1e-7, upper=1e-1, default_value=1e-7, log=True) + + cs.add_hyperparameters([ + imputation, + loss, + learning_rate, + max_iter, + max_leaf_nodes, + max_depth, + min_samples_leaf, + l2_regularization, + max_bins, + min_weight_fraction_leaf, + validation_fraction, + n_iter_no_change, + tol, + ]) + + return cs From 4a84ae7d58a54b90802978782ea7a33a05031de2 Mon Sep 17 00:00:00 2001 From: HeinrichPeters Date: Wed, 3 Jul 2019 16:52:14 -0400 Subject: [PATCH 2/2] added HistGradientBoostingClassifier --- sklearnbot/config_spaces/hist_gradient_boosting.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sklearnbot/config_spaces/hist_gradient_boosting.py b/sklearnbot/config_spaces/hist_gradient_boosting.py index bc88c79..9fb297b 100644 --- a/sklearnbot/config_spaces/hist_gradient_boosting.py +++ b/sklearnbot/config_spaces/hist_gradient_boosting.py @@ -30,7 +30,7 @@ def get_hyperparameter_search_space(seed): name='histgradientboostingclassifier__max_iter', lower=50, upper=500, default_value=100) max_leaf_nodes = ConfigSpace.hyperparameters.UniformIntegerHyperparameter( - name='histgradientboostingclassifier__max_leaf_nodes', lower=1, upper=256, default_value=31) + name='histgradientboostingclassifier__max_leaf_nodes', lower=2, upper=256, default_value=31) max_depth = ConfigSpace.hyperparameters.UniformIntegerHyperparameter( name='histgradientboostingclassifier__max_depth', lower=2, upper=20, default_value=None) @@ -42,10 +42,10 @@ def get_hyperparameter_search_space(seed): name='histgradientboostingclassifier__l2_regularization', lower=1e-10, upper=1, default_value=0.0, log=True) max_bins = ConfigSpace.hyperparameters.UniformFloatHyperparameter( - name='histgradientboostingclassifier__max_bins', lower=1, upper=512, default_value=256) + name='histgradientboostingclassifier__max_bins', lower=2, upper=512, default_value=256) validation_fraction = ConfigSpace.UniformFloatHyperparameter( - name='histgradientboostingclassifier__validation_fraction', lower=0, upper=0.3, default_value=0.1) + name='histgradientboostingclassifier__validation_fraction', lower=0.1, upper=0.3, default_value=0.1) n_iter_no_change = ConfigSpace.UniformIntegerHyperparameter( name='histgradientboostingclassifier__n_iter_no_change', lower=1, upper=2048, default_value=None)