Skip to content

Confidence bound

smac.acquisition.function.confidence_bound #

LCB #

LCB(beta: float = 1.0)

Bases: AbstractAcquisitionFunction

Computes the lower confidence bound for a given x over the best so far value as acquisition value.

:math:LCB(X) = \mu(\mathbf{X}) - \sqrt(\beta_t)\sigma(\mathbf{X}) [SKKS10]

with

:math:\beta_t = 2 \log( |D| t^2 / \beta)

:math:\text{Input space} D :math:\text{Number of input dimensions} |D| :math:\text{Number of data points} t :math:\text{Exploration/exploitation tradeoff} \beta

Returns -LCB(X) as the acquisition_function optimizer maximizes the acquisition value.

Parameters#

beta : float, defaults to 1.0 Controls the balance between exploration and exploitation of the acquisition function.

Attributes#

_beta : float Exploration-exploitation trade-off parameter. _num_data : int Number of data points seen so far.

Source code in smac/acquisition/function/confidence_bound.py
def __init__(self, beta: float = 1.0) -> None:
    super(LCB, self).__init__()
    self._beta: float = beta
    self._num_data: int | None = None

model property writable #

model: AbstractModel | None

Return the used surrogate model in the acquisition function.

__call__ #

__call__(configurations: list[Configuration]) -> ndarray

Compute the acquisition value for a given configuration.

Parameters#

configurations : list[Configuration] The configurations where the acquisition function should be evaluated.

Returns#

np.ndarray [N, 1] Acquisition values for X

Source code in smac/acquisition/function/abstract_acquisition_function.py
def __call__(self, configurations: list[Configuration]) -> np.ndarray:
    """Compute the acquisition value for a given configuration.

    Parameters
    ----------
    configurations : list[Configuration]
        The configurations where the acquisition function should be evaluated.

    Returns
    -------
    np.ndarray [N, 1]
        Acquisition values for X
    """
    X = convert_configurations_to_array(configurations)
    if len(X.shape) == 1:
        X = X[np.newaxis, :]

    acq = self._compute(X)
    if np.any(np.isnan(acq)):
        idx = np.where(np.isnan(acq))[0]
        acq[idx, :] = -np.finfo(float).max

    return acq

update #

update(model: AbstractModel, **kwargs: Any) -> None

Update the acquisition function attributes required for calculation.

This method will be called after fitting the model, but before maximizing the acquisition function. As an examples, EI uses it to update the current fmin. The default implementation only updates the attributes of the acquisition function which are already present.

Calls _update to update the acquisition function attributes.

Parameters#

model : AbstractModel The model which was used to fit the data. kwargs : Any Additional arguments to update the specific acquisition function.

Source code in smac/acquisition/function/abstract_acquisition_function.py
def update(self, model: AbstractModel, **kwargs: Any) -> None:
    """Update the acquisition function attributes required for calculation.

    This method will be called after fitting the model, but before maximizing the acquisition
    function. As an examples, EI uses it to update the current fmin. The default implementation only updates the
    attributes of the acquisition function which are already present.

    Calls `_update` to update the acquisition function attributes.

    Parameters
    ----------
    model : AbstractModel
        The model which was used to fit the data.
    kwargs : Any
        Additional arguments to update the specific acquisition function.
    """
    self.model = model
    self._update(**kwargs)