chassis
Convenience functions for optimizing MuyGPS objects
The functions
optimize_from_indices() and
optimize_from_tensors() wrap different
optimization packages to provide a simple interface to optimize the
hyperparameters of MuyGPS objects.
Currently, opt_method="scipy" wraps scipy.optimize.opt
multiparameter optimization using L-BFGS-B algorithm using the objective
function MuyGPyS.optimize.objective.loo_crossval().
Currently, opt_method="bayesian" (also accepts "bayes" and "bayes_opt")
wraps bayes_opt.BayesianOptimization. Unlike the scipy version,
BayesianOptimization can be meaningfully modified by several kwargs.
MuyGPyS assigns reasonable defaults if no settings are passed by the user.
See the BayesianOptimization
documentation for details.
- MuyGPyS.optimize.chassis.optimize_from_tensors(muygps, batch_targets, batch_nn_targets, crosswise_diffs, pairwise_diffs, batch_features=None, loss_method='mse', obj_method='loo_crossval', opt_method='bayes', sigma_method='analytic', loss_kwargs={}, verbose=False, **kwargs)[source]
Find the optimal model using existing difference matrices.
See the following example, where we have already created a
batch_indicesvector and abatch_nn_indicesmatrix usingMuyGPyS.neighbors.NN_Wrapper, acrosswise_diffsmatrix usingMuyGPyS.gp.tensors.crosswise_tensor()andpairwise_diffsusingMuyGPyS.gp.tensors.pairwise_tensor(), and initialized aMuyGPSmodelmuygps.Example
>>> from MuyGPyS.optimize.chassis import optimize_from_tensors >>> muygps = optimize_from_tensors( ... muygps, ... batch_indices, ... batch_nn_indices, ... crosswise_diffs, ... pairwise_diffs, ... train_responses, ... loss_method='mse', ... obj_method='loo_crossval', ... opt_method='scipy', ... verbose=True, ... ) parameters to be optimized: ['nu'] bounds: [[0.1 1. ]] sampled x0: [0.8858425] optimizer results: fun: 0.4797763813693626 hess_inv: <1x1 LbfgsInvHessProduct with dtype=float64> jac: array([-3.06976666e-06]) message: b'CONVERGENCE: NORM_OF_PROJECTED_GRADIENT_<=_PGTOL' nfev: 16 nit: 5 njev: 8 status: 0 success: True x: array([0.39963594])
- Parameters:
muygps (
MuyGPS) – The model to be optimized.batch_targets (
ndarray) – Matrix of floats of shape(batch_count, response_count)whose rows give the expected response for each batch element.batch_nn_targets (
ndarray) – Tensor of floats of shape(batch_count, nn_count, response_count)containing the expected response for each nearest neighbor of each batch element.crosswise_diffs (
ndarray) – A tensor of shape(batch_count, nn_count, feature_count)whose last two dimensions list the difference between each feature of each batch element element and its nearest neighbors.pairwise_diffs (
ndarray) – A tensor of shape(batch_count, nn_count, nn_count, feature_count)containing the(nn_count, nn_count, feature_count)-shaped pairwise nearest neighbor difference tensors corresponding to each of the batch elements.loss_method (
str) – Indicates the loss function to be used.obj_method (
str) – Indicates the objective function to be minimized. Currently restricted to"loo_crossval".opt_method (
str) – Indicates the optimization method to be used. Currently restricted to"bayesian"(alternately"bayes"or"bayes_opt") and"scipy".sigma_method (
Optional[str]) – The optimization method to be employed to learn thesigma_sqhyperparameter.loss_kwargs (
Dict) – A dictionary of additional keyword arguments to apply to the loss function. Loss function specific.verbose (
bool) – If True, print debug messages.kwargs – Additional keyword arguments to be passed to the wrapper optimizer.
- Return type:
- Returns:
A new MuyGPs model whose specified hyperparameters have been optimized.