bayes_opt.acquisition.ExpectedImprovement

class bayes_opt.acquisition.ExpectedImprovement(xi: float, exploration_decay: float | None = None, exploration_decay_delay: int | None = None, random_state: int | RandomState | None = None) None

Expected Improvement acqusition function.

Similar to Probability of Improvement (ProbabilityOfImprovement), but also considers the magnitude of improvement. Calculated as

\[\text{EI}(x) = (\mu(x)-y_{\text{max}} - \xi) \Phi\left( \frac{\mu(x)-y_{\text{max}} - \xi }{\sigma(x)} \right) + \sigma(x) \phi\left( \frac{\mu(x)-y_{\text{max}} - \xi }{\sigma(x)} \right)\]

where \(\Phi\) is the CDF and \(\phi\) the PDF of the normal distribution.

Parameters:
xi : float, positive

Governs the exploration/exploitation tradeoff. Lower prefers exploitation, higher prefers exploration.

exploration_decay : float, default None

Decay rate for xi. If None, no decay is applied.

exploration_decay_delay : int, default None

random_state : int, RandomState, default None

Set the random state for reproducibility.

base_acq(mean: ndarray[Any, dtype[floating[Any]]], std: ndarray[Any, dtype[floating[Any]]]) ndarray[Any, dtype[floating[Any]]]

Calculate the expected improvement.

Parameters:
mean : np.ndarray

Mean of the predictive distribution.

std : np.ndarray

Standard deviation of the predictive distribution.

Return type:

ndarray[Any, dtype[floating[Any]]]

Returns:

np.ndarray – Acquisition function value.

Raises:

ValueError – If y_max is not set.

decay_exploration() None

Decay xi by a constant rate.

Adjust exploration/exploitation trade-off by reducing xi. :rtype: None

Note

This method is called automatically at the end of each suggest() call.

Return type:

None

suggest(gp: GaussianProcessRegressor, target_space: TargetSpace, n_random: int = 10000, n_l_bfgs_b: int = 10, fit_gp: bool = True) ndarray[Any, dtype[floating[Any]]]

Suggest a promising point to probe next.

Parameters:
gp : GaussianProcessRegressor

A fitted Gaussian Process.

target_space : TargetSpace

The target space to probe.

n_random : int, default 10_000

Number of random samples to use.

n_l_bfgs_b : int, default 10

Number of starting points for the L-BFGS-B optimizer.

fit_gp : bool, default True

Whether to fit the Gaussian Process to the target space. Set to False if the GP is already fitted.

Return type:

ndarray[Any, dtype[floating[Any]]]

Returns:

np.ndarray – Suggested point to probe next.