mixle.doe.robust module¶
Noise-robust incumbent selection for Bayesian optimization (a correctness fix for noisy objectives).
mixle.doe.bayesopt.minimize() returns the incumbent as argmin of the OBSERVED objective values.
That is correct for a deterministic objective, but optimistically biased for a NOISY one: the lowest
observed value is often just the point that drew the luckiest negative noise, not the true optimum, so
best_x chases noise and best_y is a downward-biased estimate.
The standard fix (Jones et al.; the “noisy BO” recommendation) is to report the incumbent by the
surrogate’s POSTERIOR MEAN, which averages out observation noise: fit the GP over every evaluated point
and return the evaluated point whose posterior-mean prediction is best. posterior_incumbent() is
that primitive; noisy_minimize() runs the ordinary BO loop and then re-selects the incumbent this
way – so the exploration is unchanged, only the reported answer is made robust.
- class IncumbentResult(best_x, best_mean, best_index)[source]
Bases:
objectThe posterior-mean incumbent among evaluated points: its location, posterior mean, and index.
- posterior_incumbent(x, y, *, maximize=False, gp=None, fit_kwargs=None)[source]
Among the evaluated points
x, return the one with the best GP POSTERIOR MEAN (min by default).Fits a GP surrogate on
(x, y)– the same surrogate the BO loop uses – and predicts the denoised mean at every evaluated point, so the reported optimum reflects the model’s belief, not a single lucky noisy observation. For a deterministic objective the posterior mean at the observed points is ~the observations, so this reduces to the ordinary argmin/argmax.
- noisy_minimize(objective, bounds, n_init=5, n_iter=15, seed=None, *, maximize=False, gp=None, fit_kwargs=None, **minimize_kwargs)[source]
Bayesian optimization of a NOISY objective, reporting the posterior-mean incumbent.
Runs
mixle.doe.bayesopt.minimize()(same exploration), then replaces the rawargmin-of- observations incumbent with the posterior-mean incumbent (posterior_incumbent()), sobest_xis the model’s believed optimum rather than the luckiest noisy draw andbest_yis its denoised estimate. The full(x, y)evaluation history is preserved on the result.