Skip to content

[Minuit2] Allow setting the Hesse strategy flags individually - #23053

Open
guitargeek wants to merge 1 commit into
root-project:masterfrom
guitargeek:mn2_strat_3_params
Open

[Minuit2] Allow setting the Hesse strategy flags individually#23053
guitargeek wants to merge 1 commit into
root-project:masterfrom
guitargeek:mn2_strat_3_params

Conversation

@guitargeek

Copy link
Copy Markdown
Contributor

HessianCentralFDMixedDerivatives and HessianForcePosDef could only be reached by asking for strategy 3, which also zeroes the Hessian step and G2 tolerances, forces all 7 refinement cycles and inherits strategy 2's Migrad behaviour: four unrelated changes behind a single integer.

The central finite difference for the mixed second derivatives is the part that matters on ill-conditioned problems. With the default one-sided formula the O(h) truncation error is proportional to the third derivative times the step size of the other parameter, so on a likelihood whose curvatures span several orders of magnitude it can be large enough to make an otherwise positive-definite Hessian indefinite. MnPosDef then patches the covariance and the parameter errors that come out of it are wrong.

Route both flags through customizedStrategy(), like the other strategy tunables, so they can be set by name through the "Minuit2" extra options of ROOT::Math::MinimizerOptions without paying for the rest of strategy 3.

HessianCentralFDMixedDerivatives and HessianForcePosDef could only be
reached by asking for strategy 3, which also zeroes the Hessian step and
G2 tolerances, forces all 7 refinement cycles and inherits strategy 2's
Migrad behaviour: four unrelated changes behind a single integer.

The central finite difference for the mixed second derivatives is the
part that matters on ill-conditioned problems. With the default
one-sided formula the O(h) truncation error is proportional to the third
derivative times the step size of the *other* parameter, so on a
likelihood whose curvatures span several orders of magnitude it can be
large enough to make an otherwise positive-definite Hessian indefinite.
MnPosDef then patches the covariance and the parameter errors that come
out of it are wrong.

Route both flags through customizedStrategy(), like the other strategy
tunables, so they can be set by name through the "Minuit2" extra options
of ROOT::Math::MinimizerOptions without paying for the rest of strategy
3.
@github-actions

Copy link
Copy Markdown

Test Results

    23 files      23 suites   3d 13h 10m 26s ⏱️
 3 857 tests  3 856 ✅ 0 💤 1 ❌
78 561 runs  78 559 ✅ 1 💤 1 ❌

For more details on these failures, see this check.

Results for commit c31b379.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant