-
Notifications
You must be signed in to change notification settings - Fork 950
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Constrained Bayesian optimization #1034
Conversation
Job PR-1034-1 is done. |
@@ -0,0 +1,262 @@ | |||
from typing import Callable, Dict, Type, Optional, Any |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A general thought: This is a lot of changes, do we think it makes sense to have an entire submodule autogluon.search
dedicated to this code / searcher code in general? This could be an optional dependency for other modules which would allow to plug-in searcher backends. This would lighten the autogluon.core
code and ensure that the blast radius of searcher changes are contained within the searcher module.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This would also make migration easier if we eventually move the searcher logic to ray or some similar package.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In fact, we will move all this code out of the AutoGluon codebase and bring it back as a dependence. We are currently working on this full steam, our code would then work on AutoGluon, but also on Ray Tune. In the end, this is the cleanest solution.
This will happen likely in April, latest in May.
Of course, we'll make sure everything will work just as before.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's great, I think that is the cleanest approach as well.
Job PR-1034-2 is done. |
Job PR-1034-3 is done. |
if self.do_profile: | ||
self.profiler.stop('total_update') | ||
# Create BO algorithm | ||
initial_candidates_scorer = create_initial_candidates_scorer( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Use keys for the arguments
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
return IndependentThompsonSampling(model, random_state=random_state) | ||
else: | ||
return acquisition_class(model) | ||
return acquisition_class(model, active_output) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Use key: active_output=active_output
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
initial_scoring = kwargs.get('initial_scoring', 'acq_func') | ||
opt_warmstart = kwargs.get('opt_warmstart', False) | ||
# Constrained GP regression model | ||
kernel = Matern52(dimension=hp_ranges_cs.ndarray_size(), ARD=True) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add comment: We need two GP models here, one for active metric, the other for constraint metric
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
BTW: You could make this really clean by making a temporary function which creates gpmodel, model_args, and then call that both in _create_common_objects and here. This way, we make sure this is done in the same way.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please do this, let us avoid copy&paste
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've factored it out as a common function.
(as dict) as single argument. One use case for this callback is | ||
to store profiler records. | ||
""" | ||
self.active_metric_name = DEFAULT_METRIC |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These two seem to be parameters the user can pass elsewhere, e.g. in searcher_factory.py.
I think either way is OK (user can choose, or we fix them). Since these are internal names, it is fine to fix them. But please only do one of them.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've now fixed them as they are internal only.
@@ -101,7 +102,7 @@ def _create_common_objects(**kwargs): | |||
model_args = GPModelArgs( | |||
num_fantasy_samples=kwargs['num_fantasy_samples'], | |||
random_seed=random_seed, | |||
active_metric=DEFAULT_METRIC, | |||
active_metric=kwargs.get('active_metric', DEFAULT_METRIC), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since active_metric is just an internal name (right?), we can just fix it to DEFAULT_METRIC, no?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
# Common objects | ||
hp_ranges_cs, random_seed, gpmodel, model_args, profiler, _map_reward, \ | ||
skip_optimization, debug_log = _create_common_objects(**kwargs) | ||
constraint_metric_name = kwargs.get('constraint_metric', DEFAULT_CONSTRAINT_METRIC) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These are internal names, no?
Of course, the user-facing names (appearing in train_fn) must be configurable.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
@@ -234,6 +292,10 @@ def _common_defaults(is_hyperband: bool) -> (Set[str], dict, dict): | |||
default_options['gp_resource_kernel'] = 'matern52' | |||
default_options['resource_acq'] = 'bohb' | |||
default_options['num_init_random'] = 10 | |||
if is_constrained: | |||
default_options['active_metric'] = DEFAULT_METRIC |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See above. If these are internal, there is no value having the user set them. Correct me if I am wrong.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done. They are internal and fixed.
Job PR-1034-5 is done. |
# DEBUG: Supplied values are used only once | ||
self._debug_fantasy_values = None | ||
|
||
if self._use_single_model: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nitpick:
This could be done without copy&paste, something like this:
if self._use_single_model:
gpmodels = dictionarize_objective(self._gpmodel)
else:
gpmodels = self._gpmodel
output_models = {
GaussProcSurrogateModel(...)
for metric_name, gpmodel in gpmodels
}
if self._use_single_model:
self._model = output_models[self.active_metric]
else:
self._model = output_models
You are using dictionarize_objective elsewhere for this. That's elegant, but maybe the name is misleading then.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actually, please do this. We don't want c&p.
DEFAULT_CONSTRAINT_METRIC = 'constraint_metric' | ||
|
||
|
||
def dictionarize_objective(x): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK, is there not a potential problem here?
- In the code, you allow the user to define the active metric name, and only if not is DEFAULT_METRIC used
- But in dictionarize_objective, DEFAULT_METRIC is hardcoded.
I'd prefer if the hardcoded names are used everywhere, no? There seems no advantage of the user choosing these names, because they are internal anyway.
@@ -116,6 +143,10 @@ def backward_gradient( | |||
pass | |||
|
|||
|
|||
# Useful type that allows for a dictionary mapping each output name to a SurrogateModel |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you expand this docstring? This type def is used all over the place. Please do explain why this is sometimes a dict.
|
||
|
||
DEFAULT_ACQUISITION_FUNCTION = EIAcquisitionFunction | ||
DEFAULT_LOCAL_OPTIMIZER_CLASS = LBFGSOptimizeAcquisition | ||
DEFAULT_NUM_INITIAL_CANDIDATES = 250 | ||
DEFAULT_NUM_INITIAL_RANDOM_EVALUATIONS = 3 | ||
DEFAULT_METRIC = 'active_metric' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there a good reason for moving this to base_classes, and not leave it here?
I've never been a big fan of this defaults.py, but the intention was to collect constants here, and why not? Can't you import from base_classes?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The reason is that EIAcquisitionfunction requires it, resulting in a circular import.
_gp_searcher = kwargs.get('_constrained_gp_searcher') | ||
if _gp_searcher is None: | ||
kwargs['configspace'] = configspace | ||
if 'initial_scoring' in kwargs: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why not just:
self.initial_scoring = 'acq_func'
assert (...)
config_cs = self._to_config_cs(config) | ||
self.gp_searcher.update( | ||
config_cs, reward=kwargs[self._reward_attribute], | ||
constraint=kwargs[DEFAULT_CONSTRAINT_METRIC]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Again, DEFAULT_CONSTRAINT_METRIC hardcoded here. Please make it hardcoded everywhere then, do not let the user choose.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh wait, no! This name is user facing. You cannot use DEFAULT_CONSTRAINT_METRIC here, you need to use something like self._constraint_attribute !
OK, there are:
- Internal names, in internal searcher code: You can fix them and hardcode
- User facing names, which appear in train_fn. These have to be arguments, of course
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for your comments. I've addressed them in the following commit. I've now created a self._constraint_attribute, which is user facing, and hardcoded the rest.
I am OK once my comments from yesterday are addressed. In particular, the scheduler needs a _constraint_attribute attribute which can be passed in. I'd also strongly prefer the internal names of these metrics not to be user-selectable, this is just creating confusion. |
Job PR-1034-7 is done. |
OK, |
Any cycles for this one? This code is the basis for a tutorial on Fair HPO, which has been published now, and which would also go into a blog post, creating visibility for AG. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tabular: Re-order NN model priority (autogluon#1059) Tabular: Added Adaptive Early Stopping (autogluon#1042) * Tabular: Added AdaptiveES, default adaptive to LightGBM * ag.es -> ag.early_stop * addressed comments Tabular: Upgraded CatBoost to v0.25 (autogluon#1064) Tabular: Added extra_metrics argument to leaderboard (autogluon#1058) * Tabular: Added extra_metrics argument to leaderboard * addressed comments Upgrade psutil and scipy (autogluon#1072) Tabular: Added efficient OOF functionality to RF/XT models (autogluon#1066) * Tabular: Added efficient OOF functionality to RF/XT models * addressed comments, disabled RF/XT use_child_oof by default Tabular: Adjusted per-level stack time (autogluon#1075) * Tabular: Added efficient OOF functionality to RF/XT models * addressed comments, disabled RF/XT use_child_oof by default * Tabular: Adjusted stack time limit allocation Constrained Bayesian optimization (autogluon#1034) * Constrained Bayesian optimization * Comments from Matthias * Fix random_seed keyword * constraint_attribute + other comments * Fix import Co-authored-by: Valerio Perrone <vperrone@amazon.com> Refactoring of FIFOScheduler, HyperbandScheduler: self.time_out bette… (autogluon#1050) * Refactoring of FIFOScheduler, HyperbandScheduler: self.time_out better respected by stopping jobs when they run over * Added an option and warning concerning the changed meaning of 'time_out' * Removed code to add time_this_iter to result in reporter (buggy, and not used) update predict_proba return (autogluon#1044) * update predict_proba return * non-api breaking * bump * update format * update label format and predict_proba * add test * fix d8 * remove squeeze * fix * fix incorrect class mapping, force it align with label column * fix * fix label * fix sorted list * fix * reset labels * fix test * address comments * fix test * fix * label * test for custom label Vision: Limited gluoncv version (autogluon#1081) Tabular: RF/XT Efficient OOB (autogluon#1082) * Tabular: Enabled efficient OOB for RF/XT * Tabular: Removed min_samples_leaf * 300 estimators Tabular: Refactored evaluate/evaluate_predictions (autogluon#1080) * Tabular: Refactored evaluate/evaluate_predictions * minor fix Tabular: Reorder model priority (autogluon#1084) * Tabular: Enabled efficient OOB for RF/XT * Tabular: Removed min_samples_leaf * 300 estimators * Tabular: Reordered model training priority * added memory check before training XGBoost * minor update * fix xgboost Updated to v0.2.0 (autogluon#1086) Restricted sklearn to >=0.23.2 (autogluon#1088) Update to 0.2.1 (autogluon#1087) TextPredictor fails if eval_metric = 'average_precision' (autogluon#1092) * TextPredictor fails if eval_metric = 'average_precision' Fixes autogluon#1085 * TextPredictor fails if eval_metric = 'average_precision' Fixes autogluon#1085 Co-authored-by: Rohit Jain <rohit@thetalake.com> upgrade SHAP notebooks (autogluon#1089) tell users to search closed issues (autogluon#1095) Added tutorial / API reference table to README.md (autogluon#1093) Tabular: Added ImagePredictorModel (autogluon#1041) * Tabular: Added ImagePredictorModel * Added ImagePredictorModel unittest * revert accidental minimum_cat_count change * addressed comments * addressed comments * Updated after ImagePredictor refactor * minor fix * Addressed comments add `tabular_nn_torch.py`
Tabular: Re-order NN model priority (autogluon#1059) Tabular: Added Adaptive Early Stopping (autogluon#1042) * Tabular: Added AdaptiveES, default adaptive to LightGBM * ag.es -> ag.early_stop * addressed comments Tabular: Upgraded CatBoost to v0.25 (autogluon#1064) Tabular: Added extra_metrics argument to leaderboard (autogluon#1058) * Tabular: Added extra_metrics argument to leaderboard * addressed comments Upgrade psutil and scipy (autogluon#1072) Tabular: Added efficient OOF functionality to RF/XT models (autogluon#1066) * Tabular: Added efficient OOF functionality to RF/XT models * addressed comments, disabled RF/XT use_child_oof by default Tabular: Adjusted per-level stack time (autogluon#1075) * Tabular: Added efficient OOF functionality to RF/XT models * addressed comments, disabled RF/XT use_child_oof by default * Tabular: Adjusted stack time limit allocation Constrained Bayesian optimization (autogluon#1034) * Constrained Bayesian optimization * Comments from Matthias * Fix random_seed keyword * constraint_attribute + other comments * Fix import Co-authored-by: Valerio Perrone <vperrone@amazon.com> Refactoring of FIFOScheduler, HyperbandScheduler: self.time_out bette… (autogluon#1050) * Refactoring of FIFOScheduler, HyperbandScheduler: self.time_out better respected by stopping jobs when they run over * Added an option and warning concerning the changed meaning of 'time_out' * Removed code to add time_this_iter to result in reporter (buggy, and not used) update predict_proba return (autogluon#1044) * update predict_proba return * non-api breaking * bump * update format * update label format and predict_proba * add test * fix d8 * remove squeeze * fix * fix incorrect class mapping, force it align with label column * fix * fix label * fix sorted list * fix * reset labels * fix test * address comments * fix test * fix * label * test for custom label Vision: Limited gluoncv version (autogluon#1081) Tabular: RF/XT Efficient OOB (autogluon#1082) * Tabular: Enabled efficient OOB for RF/XT * Tabular: Removed min_samples_leaf * 300 estimators Tabular: Refactored evaluate/evaluate_predictions (autogluon#1080) * Tabular: Refactored evaluate/evaluate_predictions * minor fix Tabular: Reorder model priority (autogluon#1084) * Tabular: Enabled efficient OOB for RF/XT * Tabular: Removed min_samples_leaf * 300 estimators * Tabular: Reordered model training priority * added memory check before training XGBoost * minor update * fix xgboost Updated to v0.2.0 (autogluon#1086) Restricted sklearn to >=0.23.2 (autogluon#1088) Update to 0.2.1 (autogluon#1087) TextPredictor fails if eval_metric = 'average_precision' (autogluon#1092) * TextPredictor fails if eval_metric = 'average_precision' Fixes autogluon#1085 * TextPredictor fails if eval_metric = 'average_precision' Fixes autogluon#1085 Co-authored-by: Rohit Jain <rohit@thetalake.com> upgrade SHAP notebooks (autogluon#1089) tell users to search closed issues (autogluon#1095) Added tutorial / API reference table to README.md (autogluon#1093) Tabular: Added ImagePredictorModel (autogluon#1041) * Tabular: Added ImagePredictorModel * Added ImagePredictorModel unittest * revert accidental minimum_cat_count change * addressed comments * addressed comments * Updated after ImagePredictor refactor * minor fix * Addressed comments add `tabular_nn_torch.py`
author Nick Erickson <neerick@amazon.com> 1618432717 -0700 committer Taesup Kim <taesup@amazon.com> 1620282435 -0700 parent b257068 author Nick Erickson <neerick@amazon.com> 1618432717 -0700 committer Taesup Kim <taesup@amazon.com> 1620282343 -0700 parent b257068 author Nick Erickson <neerick@amazon.com> 1618432717 -0700 committer Taesup Kim <taesup@amazon.com> 1620282244 -0700 parent b257068 author Nick Erickson <neerick@amazon.com> 1618432717 -0700 committer Taesup Kim <taesup@amazon.com> 1620281986 -0700 Neural network based quantile regression models Tabular: Re-order NN model priority (autogluon#1059) Tabular: Added Adaptive Early Stopping (autogluon#1042) * Tabular: Added AdaptiveES, default adaptive to LightGBM * ag.es -> ag.early_stop * addressed comments Tabular: Upgraded CatBoost to v0.25 (autogluon#1064) Tabular: Added extra_metrics argument to leaderboard (autogluon#1058) * Tabular: Added extra_metrics argument to leaderboard * addressed comments Upgrade psutil and scipy (autogluon#1072) Tabular: Added efficient OOF functionality to RF/XT models (autogluon#1066) * Tabular: Added efficient OOF functionality to RF/XT models * addressed comments, disabled RF/XT use_child_oof by default Tabular: Adjusted per-level stack time (autogluon#1075) * Tabular: Added efficient OOF functionality to RF/XT models * addressed comments, disabled RF/XT use_child_oof by default * Tabular: Adjusted stack time limit allocation Constrained Bayesian optimization (autogluon#1034) * Constrained Bayesian optimization * Comments from Matthias * Fix random_seed keyword * constraint_attribute + other comments * Fix import Co-authored-by: Valerio Perrone <vperrone@amazon.com> Refactoring of FIFOScheduler, HyperbandScheduler: self.time_out bette… (autogluon#1050) * Refactoring of FIFOScheduler, HyperbandScheduler: self.time_out better respected by stopping jobs when they run over * Added an option and warning concerning the changed meaning of 'time_out' * Removed code to add time_this_iter to result in reporter (buggy, and not used) update predict_proba return (autogluon#1044) * update predict_proba return * non-api breaking * bump * update format * update label format and predict_proba * add test * fix d8 * remove squeeze * fix * fix incorrect class mapping, force it align with label column * fix * fix label * fix sorted list * fix * reset labels * fix test * address comments * fix test * fix * label * test for custom label Vision: Limited gluoncv version (autogluon#1081) Tabular: RF/XT Efficient OOB (autogluon#1082) * Tabular: Enabled efficient OOB for RF/XT * Tabular: Removed min_samples_leaf * 300 estimators Tabular: Refactored evaluate/evaluate_predictions (autogluon#1080) * Tabular: Refactored evaluate/evaluate_predictions * minor fix Tabular: Reorder model priority (autogluon#1084) * Tabular: Enabled efficient OOB for RF/XT * Tabular: Removed min_samples_leaf * 300 estimators * Tabular: Reordered model training priority * added memory check before training XGBoost * minor update * fix xgboost Updated to v0.2.0 (autogluon#1086) Restricted sklearn to >=0.23.2 (autogluon#1088) Update to 0.2.1 (autogluon#1087) TextPredictor fails if eval_metric = 'average_precision' (autogluon#1092) * TextPredictor fails if eval_metric = 'average_precision' Fixes autogluon#1085 * TextPredictor fails if eval_metric = 'average_precision' Fixes autogluon#1085 Co-authored-by: Rohit Jain <rohit@thetalake.com> upgrade SHAP notebooks (autogluon#1089) tell users to search closed issues (autogluon#1095) Added tutorial / API reference table to README.md (autogluon#1093) Tabular: Added ImagePredictorModel (autogluon#1041) * Tabular: Added ImagePredictorModel * Added ImagePredictorModel unittest * revert accidental minimum_cat_count change * addressed comments * addressed comments * Updated after ImagePredictor refactor * minor fix * Addressed comments add `tabular_nn_torch.py` Neural network based quantile regression models Tabular: Re-order NN model priority (autogluon#1059) Tabular: Added Adaptive Early Stopping (autogluon#1042) * Tabular: Added AdaptiveES, default adaptive to LightGBM * ag.es -> ag.early_stop * addressed comments Tabular: Upgraded CatBoost to v0.25 (autogluon#1064) Tabular: Added extra_metrics argument to leaderboard (autogluon#1058) * Tabular: Added extra_metrics argument to leaderboard * addressed comments Upgrade psutil and scipy (autogluon#1072) Tabular: Added efficient OOF functionality to RF/XT models (autogluon#1066) * Tabular: Added efficient OOF functionality to RF/XT models * addressed comments, disabled RF/XT use_child_oof by default Tabular: Adjusted per-level stack time (autogluon#1075) * Tabular: Added efficient OOF functionality to RF/XT models * addressed comments, disabled RF/XT use_child_oof by default * Tabular: Adjusted stack time limit allocation Constrained Bayesian optimization (autogluon#1034) * Constrained Bayesian optimization * Comments from Matthias * Fix random_seed keyword * constraint_attribute + other comments * Fix import Co-authored-by: Valerio Perrone <vperrone@amazon.com> Refactoring of FIFOScheduler, HyperbandScheduler: self.time_out bette… (autogluon#1050) * Refactoring of FIFOScheduler, HyperbandScheduler: self.time_out better respected by stopping jobs when they run over * Added an option and warning concerning the changed meaning of 'time_out' * Removed code to add time_this_iter to result in reporter (buggy, and not used) update predict_proba return (autogluon#1044) * update predict_proba return * non-api breaking * bump * update format * update label format and predict_proba * add test * fix d8 * remove squeeze * fix * fix incorrect class mapping, force it align with label column * fix * fix label * fix sorted list * fix * reset labels * fix test * address comments * fix test * fix * label * test for custom label Vision: Limited gluoncv version (autogluon#1081) Tabular: RF/XT Efficient OOB (autogluon#1082) * Tabular: Enabled efficient OOB for RF/XT * Tabular: Removed min_samples_leaf * 300 estimators Tabular: Refactored evaluate/evaluate_predictions (autogluon#1080) * Tabular: Refactored evaluate/evaluate_predictions * minor fix Tabular: Reorder model priority (autogluon#1084) * Tabular: Enabled efficient OOB for RF/XT * Tabular: Removed min_samples_leaf * 300 estimators * Tabular: Reordered model training priority * added memory check before training XGBoost * minor update * fix xgboost Updated to v0.2.0 (autogluon#1086) Restricted sklearn to >=0.23.2 (autogluon#1088) Update to 0.2.1 (autogluon#1087) TextPredictor fails if eval_metric = 'average_precision' (autogluon#1092) * TextPredictor fails if eval_metric = 'average_precision' Fixes autogluon#1085 * TextPredictor fails if eval_metric = 'average_precision' Fixes autogluon#1085 Co-authored-by: Rohit Jain <rohit@thetalake.com> upgrade SHAP notebooks (autogluon#1089) tell users to search closed issues (autogluon#1095) Added tutorial / API reference table to README.md (autogluon#1093) Tabular: Added ImagePredictorModel (autogluon#1041) * Tabular: Added ImagePredictorModel * Added ImagePredictorModel unittest * revert accidental minimum_cat_count change * addressed comments * addressed comments * Updated after ImagePredictor refactor * minor fix * Addressed comments add `tabular_nn_torch.py` Added license and downloads badges to README.md (autogluon#1057) Tabular: Upgraded CatBoost to v0.25 (autogluon#1064) Tabular: Adjusted per-level stack time (autogluon#1075) * Tabular: Added efficient OOF functionality to RF/XT models * addressed comments, disabled RF/XT use_child_oof by default * Tabular: Adjusted stack time limit allocation Constrained Bayesian optimization (autogluon#1034) * Constrained Bayesian optimization * Comments from Matthias * Fix random_seed keyword * constraint_attribute + other comments * Fix import Co-authored-by: Valerio Perrone <vperrone@amazon.com> Refactoring of FIFOScheduler, HyperbandScheduler: self.time_out bette… (autogluon#1050) * Refactoring of FIFOScheduler, HyperbandScheduler: self.time_out better respected by stopping jobs when they run over * Added an option and warning concerning the changed meaning of 'time_out' * Removed code to add time_this_iter to result in reporter (buggy, and not used) Vision: Limited gluoncv version (autogluon#1081) Tabular: RF/XT Efficient OOB (autogluon#1082) * Tabular: Enabled efficient OOB for RF/XT * Tabular: Removed min_samples_leaf * 300 estimators Tabular: Refactored evaluate/evaluate_predictions (autogluon#1080) * Tabular: Refactored evaluate/evaluate_predictions * minor fix Tabular: Reorder model priority (autogluon#1084) * Tabular: Enabled efficient OOB for RF/XT * Tabular: Removed min_samples_leaf * 300 estimators * Tabular: Reordered model training priority * added memory check before training XGBoost * minor update * fix xgboost Updated to v0.2.0 (autogluon#1086) Restricted sklearn to >=0.23.2 (autogluon#1088) TextPredictor fails if eval_metric = 'average_precision' (autogluon#1092) * TextPredictor fails if eval_metric = 'average_precision' Fixes autogluon#1085 * TextPredictor fails if eval_metric = 'average_precision' Fixes autogluon#1085 Co-authored-by: Rohit Jain <rohit@thetalake.com> upgrade SHAP notebooks (autogluon#1089) tell users to search closed issues (autogluon#1095) Added tutorial / API reference table to README.md (autogluon#1093) Tabular: Added ImagePredictorModel (autogluon#1041) * Tabular: Added ImagePredictorModel * Added ImagePredictorModel unittest * revert accidental minimum_cat_count change * addressed comments * addressed comments * Updated after ImagePredictor refactor * minor fix * Addressed comments add `tabular_nn_torch.py` parent b257068 author Taesup Kim <taesup@amazon.com> 1615327379 -0800 committer Taesup Kim <taesup@amazon.com> 1619138345 -0700 parent b257068 author Taesup Kim <taesup@amazon.com> 1615327379 -0800 committer Taesup Kim <taesup@amazon.com> 1619138344 -0700 parent b257068 author Taesup Kim <taesup@amazon.com> 1615327379 -0800 committer Taesup Kim <taesup@amazon.com> 1619138307 -0700 Neural network based quantile regression models (FastAI version, PyTorch version) chages after initial review. (except lgb_model and rf_quantile) Update tabular_nn_fastai.py Reverting minor changes. modifications for review. (1) pinball_loss with sample_weight (2) rebase (3) remove lgb (4) warning log for rf and xt (5) remove unnecessary comments. minor modifications. (1) warning for RF/XT quantile regression models. (2) error in `compute_weighted_metric` add `test_quantile()` with some modifications. Neural network based quantile regression models (FastAI version, PyTorch version) initial commit for quantile regression. (RandomForestMSE, ExtraTreesMSE, LightGBM, WeightedEnsemble_L2) chages after initial review. (except lgb_model and rf_quantile) Update tabular_nn_fastai.py Reverting minor changes. remove lgb setting and some modifications based on the review Neural network based quantile regression models (FastAI version, PyTorch version) enable HPO for QuantileNeuralNetwork add `test_quantile()` with some modifications. minor fix minor fix minor change enable HPO for QuantileNeuralNetwork modifications after intial review. add `tabular_nn_torch.py` modifcation after final review
author Taesup Kim <taesup@amazon.com> 1620282644 -0700 committer Taesup Kim <taesup@amazon.com> 1620283458 -0700 parent 665e0a9 author Taesup Kim <taesup@amazon.com> 1620282644 -0700 committer Taesup Kim <taesup@amazon.com> 1620283381 -0700 parent 665e0a9 author Taesup Kim <taesup@amazon.com> 1620282644 -0700 committer Taesup Kim <taesup@amazon.com> 1620283367 -0700 parent 665e0a9 author Taesup Kim <taesup@amazon.com> 1620282644 -0700 committer Taesup Kim <taesup@amazon.com> 1620283298 -0700 parent 665e0a9 author Taesup Kim <taesup@amazon.com> 1620282644 -0700 committer Taesup Kim <taesup@amazon.com> 1620283225 -0700 modification Added license and downloads badges to README.md (autogluon#1057) Tabular: Upgraded CatBoost to v0.25 (autogluon#1064) Tabular: Adjusted per-level stack time (autogluon#1075) * Tabular: Added efficient OOF functionality to RF/XT models * addressed comments, disabled RF/XT use_child_oof by default * Tabular: Adjusted stack time limit allocation Constrained Bayesian optimization (autogluon#1034) * Constrained Bayesian optimization * Comments from Matthias * Fix random_seed keyword * constraint_attribute + other comments * Fix import Co-authored-by: Valerio Perrone <vperrone@amazon.com> Refactoring of FIFOScheduler, HyperbandScheduler: self.time_out bette… (autogluon#1050) * Refactoring of FIFOScheduler, HyperbandScheduler: self.time_out better respected by stopping jobs when they run over * Added an option and warning concerning the changed meaning of 'time_out' * Removed code to add time_this_iter to result in reporter (buggy, and not used) Vision: Limited gluoncv version (autogluon#1081) Tabular: RF/XT Efficient OOB (autogluon#1082) * Tabular: Enabled efficient OOB for RF/XT * Tabular: Removed min_samples_leaf * 300 estimators Tabular: Refactored evaluate/evaluate_predictions (autogluon#1080) * Tabular: Refactored evaluate/evaluate_predictions * minor fix Updated to v0.2.0 (autogluon#1086) Restricted sklearn to >=0.23.2 (autogluon#1088) TextPredictor fails if eval_metric = 'average_precision' (autogluon#1092) * TextPredictor fails if eval_metric = 'average_precision' Fixes autogluon#1085 * TextPredictor fails if eval_metric = 'average_precision' Fixes autogluon#1085 Co-authored-by: Rohit Jain <rohit@thetalake.com> upgrade SHAP notebooks (autogluon#1089) tell users to search closed issues (autogluon#1095) Added tutorial / API reference table to README.md (autogluon#1093)
parent b257068 author Nick Erickson <neerick@amazon.com> 1618432717 -0700 committer Taesup Kim <taesup@amazon.com> 1620282435 -0700 parent b257068 author Nick Erickson <neerick@amazon.com> 1618432717 -0700 committer Taesup Kim <taesup@amazon.com> 1620282343 -0700 parent b257068 author Nick Erickson <neerick@amazon.com> 1618432717 -0700 committer Taesup Kim <taesup@amazon.com> 1620282244 -0700 parent b257068 author Nick Erickson <neerick@amazon.com> 1618432717 -0700 committer Taesup Kim <taesup@amazon.com> 1620281986 -0700 Neural network based quantile regression models Tabular: Re-order NN model priority (autogluon#1059) Tabular: Added Adaptive Early Stopping (autogluon#1042) * Tabular: Added AdaptiveES, default adaptive to LightGBM * ag.es -> ag.early_stop * addressed comments Tabular: Upgraded CatBoost to v0.25 (autogluon#1064) Tabular: Added extra_metrics argument to leaderboard (autogluon#1058) * Tabular: Added extra_metrics argument to leaderboard * addressed comments Upgrade psutil and scipy (autogluon#1072) Tabular: Added efficient OOF functionality to RF/XT models (autogluon#1066) * Tabular: Added efficient OOF functionality to RF/XT models * addressed comments, disabled RF/XT use_child_oof by default Tabular: Adjusted per-level stack time (autogluon#1075) * Tabular: Added efficient OOF functionality to RF/XT models * addressed comments, disabled RF/XT use_child_oof by default * Tabular: Adjusted stack time limit allocation Constrained Bayesian optimization (autogluon#1034) * Constrained Bayesian optimization * Comments from Matthias * Fix random_seed keyword * constraint_attribute + other comments * Fix import Co-authored-by: Valerio Perrone <vperrone@amazon.com> Refactoring of FIFOScheduler, HyperbandScheduler: self.time_out bette… (autogluon#1050) * Refactoring of FIFOScheduler, HyperbandScheduler: self.time_out better respected by stopping jobs when they run over * Added an option and warning concerning the changed meaning of 'time_out' * Removed code to add time_this_iter to result in reporter (buggy, and not used) update predict_proba return (autogluon#1044) * update predict_proba return * non-api breaking * bump * update format * update label format and predict_proba * add test * fix d8 * remove squeeze * fix * fix incorrect class mapping, force it align with label column * fix * fix label * fix sorted list * fix * reset labels * fix test * address comments * fix test * fix * label * test for custom label Vision: Limited gluoncv version (autogluon#1081) Tabular: RF/XT Efficient OOB (autogluon#1082) * Tabular: Enabled efficient OOB for RF/XT * Tabular: Removed min_samples_leaf * 300 estimators Tabular: Refactored evaluate/evaluate_predictions (autogluon#1080) * Tabular: Refactored evaluate/evaluate_predictions * minor fix Tabular: Reorder model priority (autogluon#1084) * Tabular: Enabled efficient OOB for RF/XT * Tabular: Removed min_samples_leaf * 300 estimators * Tabular: Reordered model training priority * added memory check before training XGBoost * minor update * fix xgboost Updated to v0.2.0 (autogluon#1086) Restricted sklearn to >=0.23.2 (autogluon#1088) Update to 0.2.1 (autogluon#1087) TextPredictor fails if eval_metric = 'average_precision' (autogluon#1092) * TextPredictor fails if eval_metric = 'average_precision' Fixes autogluon#1085 * TextPredictor fails if eval_metric = 'average_precision' Fixes autogluon#1085 Co-authored-by: Rohit Jain <rohit@thetalake.com> upgrade SHAP notebooks (autogluon#1089) tell users to search closed issues (autogluon#1095) Added tutorial / API reference table to README.md (autogluon#1093) Tabular: Added ImagePredictorModel (autogluon#1041) * Tabular: Added ImagePredictorModel * Added ImagePredictorModel unittest * revert accidental minimum_cat_count change * addressed comments * addressed comments * Updated after ImagePredictor refactor * minor fix * Addressed comments add `tabular_nn_torch.py` Neural network based quantile regression models Tabular: Re-order NN model priority (autogluon#1059) Tabular: Added Adaptive Early Stopping (autogluon#1042) * Tabular: Added AdaptiveES, default adaptive to LightGBM * ag.es -> ag.early_stop * addressed comments Tabular: Upgraded CatBoost to v0.25 (autogluon#1064) Tabular: Added extra_metrics argument to leaderboard (autogluon#1058) * Tabular: Added extra_metrics argument to leaderboard * addressed comments Upgrade psutil and scipy (autogluon#1072) Tabular: Added efficient OOF functionality to RF/XT models (autogluon#1066) * Tabular: Added efficient OOF functionality to RF/XT models * addressed comments, disabled RF/XT use_child_oof by default Tabular: Adjusted per-level stack time (autogluon#1075) * Tabular: Added efficient OOF functionality to RF/XT models * addressed comments, disabled RF/XT use_child_oof by default * Tabular: Adjusted stack time limit allocation Constrained Bayesian optimization (autogluon#1034) * Constrained Bayesian optimization * Comments from Matthias * Fix random_seed keyword * constraint_attribute + other comments * Fix import Co-authored-by: Valerio Perrone <vperrone@amazon.com> Refactoring of FIFOScheduler, HyperbandScheduler: self.time_out bette… (autogluon#1050) * Refactoring of FIFOScheduler, HyperbandScheduler: self.time_out better respected by stopping jobs when they run over * Added an option and warning concerning the changed meaning of 'time_out' * Removed code to add time_this_iter to result in reporter (buggy, and not used) update predict_proba return (autogluon#1044) * update predict_proba return * non-api breaking * bump * update format * update label format and predict_proba * add test * fix d8 * remove squeeze * fix * fix incorrect class mapping, force it align with label column * fix * fix label * fix sorted list * fix * reset labels * fix test * address comments * fix test * fix * label * test for custom label Vision: Limited gluoncv version (autogluon#1081) Tabular: RF/XT Efficient OOB (autogluon#1082) * Tabular: Enabled efficient OOB for RF/XT * Tabular: Removed min_samples_leaf * 300 estimators Tabular: Refactored evaluate/evaluate_predictions (autogluon#1080) * Tabular: Refactored evaluate/evaluate_predictions * minor fix Tabular: Reorder model priority (autogluon#1084) * Tabular: Enabled efficient OOB for RF/XT * Tabular: Removed min_samples_leaf * 300 estimators * Tabular: Reordered model training priority * added memory check before training XGBoost * minor update * fix xgboost Updated to v0.2.0 (autogluon#1086) Restricted sklearn to >=0.23.2 (autogluon#1088) Update to 0.2.1 (autogluon#1087) TextPredictor fails if eval_metric = 'average_precision' (autogluon#1092) * TextPredictor fails if eval_metric = 'average_precision' Fixes autogluon#1085 * TextPredictor fails if eval_metric = 'average_precision' Fixes autogluon#1085 Co-authored-by: Rohit Jain <rohit@thetalake.com> upgrade SHAP notebooks (autogluon#1089) tell users to search closed issues (autogluon#1095) Added tutorial / API reference table to README.md (autogluon#1093) Tabular: Added ImagePredictorModel (autogluon#1041) * Tabular: Added ImagePredictorModel * Added ImagePredictorModel unittest * revert accidental minimum_cat_count change * addressed comments * addressed comments * Updated after ImagePredictor refactor * minor fix * Addressed comments add `tabular_nn_torch.py` Added license and downloads badges to README.md (autogluon#1057) Tabular: Upgraded CatBoost to v0.25 (autogluon#1064) Tabular: Adjusted per-level stack time (autogluon#1075) * Tabular: Added efficient OOF functionality to RF/XT models * addressed comments, disabled RF/XT use_child_oof by default * Tabular: Adjusted stack time limit allocation Constrained Bayesian optimization (autogluon#1034) * Constrained Bayesian optimization * Comments from Matthias * Fix random_seed keyword * constraint_attribute + other comments * Fix import Co-authored-by: Valerio Perrone <vperrone@amazon.com> Refactoring of FIFOScheduler, HyperbandScheduler: self.time_out bette… (autogluon#1050) * Refactoring of FIFOScheduler, HyperbandScheduler: self.time_out better respected by stopping jobs when they run over * Added an option and warning concerning the changed meaning of 'time_out' * Removed code to add time_this_iter to result in reporter (buggy, and not used) Vision: Limited gluoncv version (autogluon#1081) Tabular: RF/XT Efficient OOB (autogluon#1082) * Tabular: Enabled efficient OOB for RF/XT * Tabular: Removed min_samples_leaf * 300 estimators Tabular: Refactored evaluate/evaluate_predictions (autogluon#1080) * Tabular: Refactored evaluate/evaluate_predictions * minor fix Tabular: Reorder model priority (autogluon#1084) * Tabular: Enabled efficient OOB for RF/XT * Tabular: Removed min_samples_leaf * 300 estimators * Tabular: Reordered model training priority * added memory check before training XGBoost * minor update * fix xgboost Updated to v0.2.0 (autogluon#1086) Restricted sklearn to >=0.23.2 (autogluon#1088) TextPredictor fails if eval_metric = 'average_precision' (autogluon#1092) * TextPredictor fails if eval_metric = 'average_precision' Fixes autogluon#1085 * TextPredictor fails if eval_metric = 'average_precision' Fixes autogluon#1085 Co-authored-by: Rohit Jain <rohit@thetalake.com> upgrade SHAP notebooks (autogluon#1089) tell users to search closed issues (autogluon#1095) Added tutorial / API reference table to README.md (autogluon#1093) Tabular: Added ImagePredictorModel (autogluon#1041) * Tabular: Added ImagePredictorModel * Added ImagePredictorModel unittest * revert accidental minimum_cat_count change * addressed comments * addressed comments * Updated after ImagePredictor refactor * minor fix * Addressed comments add `tabular_nn_torch.py` parent b257068 author Taesup Kim <taesup@amazon.com> 1615327379 -0800 committer Taesup Kim <taesup@amazon.com> 1619138345 -0700 parent b257068 author Taesup Kim <taesup@amazon.com> 1615327379 -0800 committer Taesup Kim <taesup@amazon.com> 1619138344 -0700 parent b257068 author Taesup Kim <taesup@amazon.com> 1615327379 -0800 committer Taesup Kim <taesup@amazon.com> 1619138307 -0700 Neural network based quantile regression models (FastAI version, PyTorch version) chages after initial review. (except lgb_model and rf_quantile) Update tabular_nn_fastai.py Reverting minor changes. modifications for review. (1) pinball_loss with sample_weight (2) rebase (3) remove lgb (4) warning log for rf and xt (5) remove unnecessary comments. minor modifications. (1) warning for RF/XT quantile regression models. (2) error in `compute_weighted_metric` add `test_quantile()` with some modifications. Neural network based quantile regression models (FastAI version, PyTorch version) initial commit for quantile regression. (RandomForestMSE, ExtraTreesMSE, LightGBM, WeightedEnsemble_L2) chages after initial review. (except lgb_model and rf_quantile) Update tabular_nn_fastai.py Reverting minor changes. remove lgb setting and some modifications based on the review Neural network based quantile regression models (FastAI version, PyTorch version) enable HPO for QuantileNeuralNetwork add `test_quantile()` with some modifications. minor fix minor fix minor change enable HPO for QuantileNeuralNetwork modifications after intial review. add `tabular_nn_torch.py` modifcation after final review parent 665e0a9 author Taesup Kim <taesup@amazon.com> 1620282644 -0700 committer Taesup Kim <taesup@amazon.com> 1620283458 -0700 parent 665e0a9 author Taesup Kim <taesup@amazon.com> 1620282644 -0700 committer Taesup Kim <taesup@amazon.com> 1620283381 -0700 parent 665e0a9 author Taesup Kim <taesup@amazon.com> 1620282644 -0700 committer Taesup Kim <taesup@amazon.com> 1620283367 -0700 parent 665e0a9 author Taesup Kim <taesup@amazon.com> 1620282644 -0700 committer Taesup Kim <taesup@amazon.com> 1620283298 -0700 parent 665e0a9 author Taesup Kim <taesup@amazon.com> 1620282644 -0700 committer Taesup Kim <taesup@amazon.com> 1620283225 -0700 modification Added license and downloads badges to README.md (autogluon#1057) Tabular: Upgraded CatBoost to v0.25 (autogluon#1064) Tabular: Adjusted per-level stack time (autogluon#1075) * Tabular: Added efficient OOF functionality to RF/XT models * addressed comments, disabled RF/XT use_child_oof by default * Tabular: Adjusted stack time limit allocation Constrained Bayesian optimization (autogluon#1034) * Constrained Bayesian optimization * Comments from Matthias * Fix random_seed keyword * constraint_attribute + other comments * Fix import Co-authored-by: Valerio Perrone <vperrone@amazon.com> Refactoring of FIFOScheduler, HyperbandScheduler: self.time_out bette… (autogluon#1050) * Refactoring of FIFOScheduler, HyperbandScheduler: self.time_out better respected by stopping jobs when they run over * Added an option and warning concerning the changed meaning of 'time_out' * Removed code to add time_this_iter to result in reporter (buggy, and not used) Vision: Limited gluoncv version (autogluon#1081) Tabular: RF/XT Efficient OOB (autogluon#1082) * Tabular: Enabled efficient OOB for RF/XT * Tabular: Removed min_samples_leaf * 300 estimators Tabular: Refactored evaluate/evaluate_predictions (autogluon#1080) * Tabular: Refactored evaluate/evaluate_predictions * minor fix Updated to v0.2.0 (autogluon#1086) Restricted sklearn to >=0.23.2 (autogluon#1088) TextPredictor fails if eval_metric = 'average_precision' (autogluon#1092) * TextPredictor fails if eval_metric = 'average_precision' Fixes autogluon#1085 * TextPredictor fails if eval_metric = 'average_precision' Fixes autogluon#1085 Co-authored-by: Rohit Jain <rohit@thetalake.com> upgrade SHAP notebooks (autogluon#1089) tell users to search closed issues (autogluon#1095) Added tutorial / API reference table to README.md (autogluon#1093)
* rebase and add quantile-nn parent b257068 author Nick Erickson <neerick@amazon.com> 1618432717 -0700 committer Taesup Kim <taesup@amazon.com> 1620282435 -0700 parent b257068 author Nick Erickson <neerick@amazon.com> 1618432717 -0700 committer Taesup Kim <taesup@amazon.com> 1620282343 -0700 parent b257068 author Nick Erickson <neerick@amazon.com> 1618432717 -0700 committer Taesup Kim <taesup@amazon.com> 1620282244 -0700 parent b257068 author Nick Erickson <neerick@amazon.com> 1618432717 -0700 committer Taesup Kim <taesup@amazon.com> 1620281986 -0700 Neural network based quantile regression models Tabular: Re-order NN model priority (#1059) Tabular: Added Adaptive Early Stopping (#1042) * Tabular: Added AdaptiveES, default adaptive to LightGBM * ag.es -> ag.early_stop * addressed comments Tabular: Upgraded CatBoost to v0.25 (#1064) Tabular: Added extra_metrics argument to leaderboard (#1058) * Tabular: Added extra_metrics argument to leaderboard * addressed comments Upgrade psutil and scipy (#1072) Tabular: Added efficient OOF functionality to RF/XT models (#1066) * Tabular: Added efficient OOF functionality to RF/XT models * addressed comments, disabled RF/XT use_child_oof by default Tabular: Adjusted per-level stack time (#1075) * Tabular: Added efficient OOF functionality to RF/XT models * addressed comments, disabled RF/XT use_child_oof by default * Tabular: Adjusted stack time limit allocation Constrained Bayesian optimization (#1034) * Constrained Bayesian optimization * Comments from Matthias * Fix random_seed keyword * constraint_attribute + other comments * Fix import Co-authored-by: Valerio Perrone <vperrone@amazon.com> Refactoring of FIFOScheduler, HyperbandScheduler: self.time_out bette… (#1050) * Refactoring of FIFOScheduler, HyperbandScheduler: self.time_out better respected by stopping jobs when they run over * Added an option and warning concerning the changed meaning of 'time_out' * Removed code to add time_this_iter to result in reporter (buggy, and not used) update predict_proba return (#1044) * update predict_proba return * non-api breaking * bump * update format * update label format and predict_proba * add test * fix d8 * remove squeeze * fix * fix incorrect class mapping, force it align with label column * fix * fix label * fix sorted list * fix * reset labels * fix test * address comments * fix test * fix * label * test for custom label Vision: Limited gluoncv version (#1081) Tabular: RF/XT Efficient OOB (#1082) * Tabular: Enabled efficient OOB for RF/XT * Tabular: Removed min_samples_leaf * 300 estimators Tabular: Refactored evaluate/evaluate_predictions (#1080) * Tabular: Refactored evaluate/evaluate_predictions * minor fix Tabular: Reorder model priority (#1084) * Tabular: Enabled efficient OOB for RF/XT * Tabular: Removed min_samples_leaf * 300 estimators * Tabular: Reordered model training priority * added memory check before training XGBoost * minor update * fix xgboost Updated to v0.2.0 (#1086) Restricted sklearn to >=0.23.2 (#1088) Update to 0.2.1 (#1087) TextPredictor fails if eval_metric = 'average_precision' (#1092) * TextPredictor fails if eval_metric = 'average_precision' Fixes #1085 * TextPredictor fails if eval_metric = 'average_precision' Fixes #1085 Co-authored-by: Rohit Jain <rohit@thetalake.com> upgrade SHAP notebooks (#1089) tell users to search closed issues (#1095) Added tutorial / API reference table to README.md (#1093) Tabular: Added ImagePredictorModel (#1041) * Tabular: Added ImagePredictorModel * Added ImagePredictorModel unittest * revert accidental minimum_cat_count change * addressed comments * addressed comments * Updated after ImagePredictor refactor * minor fix * Addressed comments add `tabular_nn_torch.py` Neural network based quantile regression models Tabular: Re-order NN model priority (#1059) Tabular: Added Adaptive Early Stopping (#1042) * Tabular: Added AdaptiveES, default adaptive to LightGBM * ag.es -> ag.early_stop * addressed comments Tabular: Upgraded CatBoost to v0.25 (#1064) Tabular: Added extra_metrics argument to leaderboard (#1058) * Tabular: Added extra_metrics argument to leaderboard * addressed comments Upgrade psutil and scipy (#1072) Tabular: Added efficient OOF functionality to RF/XT models (#1066) * Tabular: Added efficient OOF functionality to RF/XT models * addressed comments, disabled RF/XT use_child_oof by default Tabular: Adjusted per-level stack time (#1075) * Tabular: Added efficient OOF functionality to RF/XT models * addressed comments, disabled RF/XT use_child_oof by default * Tabular: Adjusted stack time limit allocation Constrained Bayesian optimization (#1034) * Constrained Bayesian optimization * Comments from Matthias * Fix random_seed keyword * constraint_attribute + other comments * Fix import Co-authored-by: Valerio Perrone <vperrone@amazon.com> Refactoring of FIFOScheduler, HyperbandScheduler: self.time_out bette… (#1050) * Refactoring of FIFOScheduler, HyperbandScheduler: self.time_out better respected by stopping jobs when they run over * Added an option and warning concerning the changed meaning of 'time_out' * Removed code to add time_this_iter to result in reporter (buggy, and not used) update predict_proba return (#1044) * update predict_proba return * non-api breaking * bump * update format * update label format and predict_proba * add test * fix d8 * remove squeeze * fix * fix incorrect class mapping, force it align with label column * fix * fix label * fix sorted list * fix * reset labels * fix test * address comments * fix test * fix * label * test for custom label Vision: Limited gluoncv version (#1081) Tabular: RF/XT Efficient OOB (#1082) * Tabular: Enabled efficient OOB for RF/XT * Tabular: Removed min_samples_leaf * 300 estimators Tabular: Refactored evaluate/evaluate_predictions (#1080) * Tabular: Refactored evaluate/evaluate_predictions * minor fix Tabular: Reorder model priority (#1084) * Tabular: Enabled efficient OOB for RF/XT * Tabular: Removed min_samples_leaf * 300 estimators * Tabular: Reordered model training priority * added memory check before training XGBoost * minor update * fix xgboost Updated to v0.2.0 (#1086) Restricted sklearn to >=0.23.2 (#1088) Update to 0.2.1 (#1087) TextPredictor fails if eval_metric = 'average_precision' (#1092) * TextPredictor fails if eval_metric = 'average_precision' Fixes #1085 * TextPredictor fails if eval_metric = 'average_precision' Fixes #1085 Co-authored-by: Rohit Jain <rohit@thetalake.com> upgrade SHAP notebooks (#1089) tell users to search closed issues (#1095) Added tutorial / API reference table to README.md (#1093) Tabular: Added ImagePredictorModel (#1041) * Tabular: Added ImagePredictorModel * Added ImagePredictorModel unittest * revert accidental minimum_cat_count change * addressed comments * addressed comments * Updated after ImagePredictor refactor * minor fix * Addressed comments add `tabular_nn_torch.py` Added license and downloads badges to README.md (#1057) Tabular: Upgraded CatBoost to v0.25 (#1064) Tabular: Adjusted per-level stack time (#1075) * Tabular: Added efficient OOF functionality to RF/XT models * addressed comments, disabled RF/XT use_child_oof by default * Tabular: Adjusted stack time limit allocation Constrained Bayesian optimization (#1034) * Constrained Bayesian optimization * Comments from Matthias * Fix random_seed keyword * constraint_attribute + other comments * Fix import Co-authored-by: Valerio Perrone <vperrone@amazon.com> Refactoring of FIFOScheduler, HyperbandScheduler: self.time_out bette… (#1050) * Refactoring of FIFOScheduler, HyperbandScheduler: self.time_out better respected by stopping jobs when they run over * Added an option and warning concerning the changed meaning of 'time_out' * Removed code to add time_this_iter to result in reporter (buggy, and not used) Vision: Limited gluoncv version (#1081) Tabular: RF/XT Efficient OOB (#1082) * Tabular: Enabled efficient OOB for RF/XT * Tabular: Removed min_samples_leaf * 300 estimators Tabular: Refactored evaluate/evaluate_predictions (#1080) * Tabular: Refactored evaluate/evaluate_predictions * minor fix Tabular: Reorder model priority (#1084) * Tabular: Enabled efficient OOB for RF/XT * Tabular: Removed min_samples_leaf * 300 estimators * Tabular: Reordered model training priority * added memory check before training XGBoost * minor update * fix xgboost Updated to v0.2.0 (#1086) Restricted sklearn to >=0.23.2 (#1088) TextPredictor fails if eval_metric = 'average_precision' (#1092) * TextPredictor fails if eval_metric = 'average_precision' Fixes #1085 * TextPredictor fails if eval_metric = 'average_precision' Fixes #1085 Co-authored-by: Rohit Jain <rohit@thetalake.com> upgrade SHAP notebooks (#1089) tell users to search closed issues (#1095) Added tutorial / API reference table to README.md (#1093) Tabular: Added ImagePredictorModel (#1041) * Tabular: Added ImagePredictorModel * Added ImagePredictorModel unittest * revert accidental minimum_cat_count change * addressed comments * addressed comments * Updated after ImagePredictor refactor * minor fix * Addressed comments add `tabular_nn_torch.py` parent b257068 author Taesup Kim <taesup@amazon.com> 1615327379 -0800 committer Taesup Kim <taesup@amazon.com> 1619138345 -0700 parent b257068 author Taesup Kim <taesup@amazon.com> 1615327379 -0800 committer Taesup Kim <taesup@amazon.com> 1619138344 -0700 parent b257068 author Taesup Kim <taesup@amazon.com> 1615327379 -0800 committer Taesup Kim <taesup@amazon.com> 1619138307 -0700 Neural network based quantile regression models (FastAI version, PyTorch version) chages after initial review. (except lgb_model and rf_quantile) Update tabular_nn_fastai.py Reverting minor changes. modifications for review. (1) pinball_loss with sample_weight (2) rebase (3) remove lgb (4) warning log for rf and xt (5) remove unnecessary comments. minor modifications. (1) warning for RF/XT quantile regression models. (2) error in `compute_weighted_metric` add `test_quantile()` with some modifications. Neural network based quantile regression models (FastAI version, PyTorch version) initial commit for quantile regression. (RandomForestMSE, ExtraTreesMSE, LightGBM, WeightedEnsemble_L2) chages after initial review. (except lgb_model and rf_quantile) Update tabular_nn_fastai.py Reverting minor changes. remove lgb setting and some modifications based on the review Neural network based quantile regression models (FastAI version, PyTorch version) enable HPO for QuantileNeuralNetwork add `test_quantile()` with some modifications. minor fix minor fix minor change enable HPO for QuantileNeuralNetwork modifications after intial review. add `tabular_nn_torch.py` modifcation after final review parent 665e0a9 author Taesup Kim <taesup@amazon.com> 1620282644 -0700 committer Taesup Kim <taesup@amazon.com> 1620283458 -0700 parent 665e0a9 author Taesup Kim <taesup@amazon.com> 1620282644 -0700 committer Taesup Kim <taesup@amazon.com> 1620283381 -0700 parent 665e0a9 author Taesup Kim <taesup@amazon.com> 1620282644 -0700 committer Taesup Kim <taesup@amazon.com> 1620283367 -0700 parent 665e0a9 author Taesup Kim <taesup@amazon.com> 1620282644 -0700 committer Taesup Kim <taesup@amazon.com> 1620283298 -0700 parent 665e0a9 author Taesup Kim <taesup@amazon.com> 1620282644 -0700 committer Taesup Kim <taesup@amazon.com> 1620283225 -0700 modification Added license and downloads badges to README.md (#1057) Tabular: Upgraded CatBoost to v0.25 (#1064) Tabular: Adjusted per-level stack time (#1075) * Tabular: Added efficient OOF functionality to RF/XT models * addressed comments, disabled RF/XT use_child_oof by default * Tabular: Adjusted stack time limit allocation Constrained Bayesian optimization (#1034) * Constrained Bayesian optimization * Comments from Matthias * Fix random_seed keyword * constraint_attribute + other comments * Fix import Co-authored-by: Valerio Perrone <vperrone@amazon.com> Refactoring of FIFOScheduler, HyperbandScheduler: self.time_out bette… (#1050) * Refactoring of FIFOScheduler, HyperbandScheduler: self.time_out better respected by stopping jobs when they run over * Added an option and warning concerning the changed meaning of 'time_out' * Removed code to add time_this_iter to result in reporter (buggy, and not used) Vision: Limited gluoncv version (#1081) Tabular: RF/XT Efficient OOB (#1082) * Tabular: Enabled efficient OOB for RF/XT * Tabular: Removed min_samples_leaf * 300 estimators Tabular: Refactored evaluate/evaluate_predictions (#1080) * Tabular: Refactored evaluate/evaluate_predictions * minor fix Updated to v0.2.0 (#1086) Restricted sklearn to >=0.23.2 (#1088) TextPredictor fails if eval_metric = 'average_precision' (#1092) * TextPredictor fails if eval_metric = 'average_precision' Fixes #1085 * TextPredictor fails if eval_metric = 'average_precision' Fixes #1085 Co-authored-by: Rohit Jain <rohit@thetalake.com> upgrade SHAP notebooks (#1089) tell users to search closed issues (#1095) Added tutorial / API reference table to README.md (#1093) * modification * rearrange modules. Co-authored-by: Nick Erickson <neerick@amazon.com>
Description of changes:
Extends the acquisition function to handle multiple outputs and implements constrained Bayesian optimization.
This is useful to tackle problems such as optimizing accuracy with an upper bound on memory requirements or on unfairness.
The main change is meanstd_acqfunc.py. The acquisition function now internally operates with a dictionary Dict[str, SurrogateModel], allowing for a model for each output metric. The standard case is a dictionary with a single model but the change is backward compatible: if a plain SurrogateModel is passed, the acquisition function automatically turns it into a one-key dictionary.
Other key changes:
Implemented CEIAcquisitionFunction and EIpuAcquisitionFunction, two multi-output acquisition functions. These require the predictions from both the main model and, respectively, the constraint or cost model, and return the head gradients wrt to the mean and standard deviation of each model.
Introduced 'constrained_bayesopt', a new searcher to run end-to-end experiments with constrained BO.
Extended GPModelPendingCandidateStateTransformer to support multiple models with a shared state.
Testing
All previous tests pass. The behavior of existing code is unaffected by the acquisition function refactoring.
test_bayesopt_eipu.py: tests cost-aware EI, an example of multi-output acquisition function.
test_bayesopt_cei.py: tests the constrained EI. This includes tests with/without MCMC, with/without fantasizing, and with/without feasible candidates.
test_multi_output_searcher.py: tests the constrained BO searcher.