inversion_ideas.utils.estimate_tradeoff_parameter#

inversion_ideas.utils.estimate_tradeoff_parameter(objective_one, objective_two, model, **kwargs)[source]#

Estimate balanced value for the trade-off parameter between two objective functions.

Make use of the power iteration method implemented in get_largest_eigenvalue() to estimate the largeset absolute eigenvalue of the Hessian matrices of the two objective functions for a given model. And then return the ratio between the eigenvalue of the first and second Hessian matrices.

Parameters:
objective_one, objective_twobase.Objective

First and second objective functions. The Hessian matrices of the two of them will be computed and then used to calculate their largest absolute eigenvalues.

model(n_params,) array

Model array used to compute the Hessian matrices.

**kwargs

Keyword arguments that will be passed to get_largest_eigenvalue().

Returns:
float

The ratio between the largest eigenvalues of the Hessian of objective_one and objective_two.

Notes

Consider two objective functions \(\phi_1(\mathbf{m})\) and \(\phi_2(\mathbf{m})\), and we desire to estimate a balanced value for a trade-off parameter \(\beta\) that acts as a multiplier of \(\phi_2(\mathbf{m})\):

\[\phi_1(\mathbf{m}) + \beta \, \phi_2(\mathbf{m})\]

This function will estimate the largest absolute eigenvalues \(|\lambda_1|\) and \(|\lambda_2|\) for the Hessian matrices \(\nabla^2 \phi_1(\mathbf{m})\) and \(\nabla^2 \phi_2(\mathbf{m})\), respectively, for a given model \(\mathbf{m}\).

And finally estimate a balanced value for trade-off parameter \(\beta\) as:

\[\beta = \frac{|\lambda_1|}{|\lambda_2|}\]