Skip to content

Standard deviation

standard_deviation

Output standard deviation.

Classes

StandardDeviation

StandardDeviation(
    regressor_distribution: BaseRegressorDistribution,
    batch_size: int = 1,
    mc_size: int = 10000,
)

Bases: BaseExploration

Output standard deviation.

This acquisition criterion is expressed as:

σ[x]=E[(Y(x)E[Y(x)])2]

where Y is the random process modelling the uncertainty of the surrogate model f^.

Parameters:

  • regressor_distribution (BaseRegressorDistribution) –

    The distribution of the regressor.

  • batch_size (int, default: 1 ) –

    The number of points to be acquired in parallel; if 1, acquire points sequentially.

  • mc_size (int, default: 10000 ) –

    The sample size to estimate the acquisition criterion in parallel.

Source code in src/gemseo_mlearning/active_learning/acquisition_criteria/base_acquisition_criterion.py
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
def __init__(
    self,
    regressor_distribution: BaseRegressorDistribution,
    batch_size: int = 1,
    mc_size: int = 10_000,
) -> None:
    """
    Args:
        regressor_distribution: The distribution of the regressor.
        batch_size: The number of points to be acquired in parallel;
            if `1`, acquire points sequentially.
        mc_size: The sample size to estimate the acquisition criterion in parallel.
    """  # noqa: D205 D212 D415
    self._compute_mean = regressor_distribution.compute_mean
    self._compute_standard_deviation = (
        regressor_distribution.compute_standard_deviation
    )
    self._compute_variance = regressor_distribution.compute_variance
    output_data = regressor_distribution.learning_set.output_dataset.to_numpy()
    self.output_range = output_data.max() - output_data.min()
    self._regressor_distribution = regressor_distribution
    try:
        jac = self._compute_jacobian(
            ones(regressor_distribution.algo.input_dimension)
        )
    except NotImplementedError:
        jac = None

    self._batch_size = batch_size
    self._mc_size = mc_size
    self._compute_samples = regressor_distribution.compute_samples

    if batch_size == 1:
        if isinstance(regressor_distribution, KrigingDistribution):
            compute_output = self._compute
        else:
            compute_output = self._compute_empirically
    else:
        if isinstance(regressor_distribution, KrigingDistribution):
            compute_output = self._compute_by_batch
        else:
            compute_output = self._compute_by_batch_empirically

    self._qoi = None
    super().__init__(
        compute_output,
        self.__class__.__name__,
        jac=jac,
    )

    self.update()
Attributes
MAXIMIZE class-attribute
MAXIMIZE: bool = True

Whether this acquisition criterion must be maximized.

output_range instance-attribute
output_range: float = max() - min()

The output range.

qoi property
qoi: Any

The quantity of interest.

Functions
update
update() -> None

Update the acquisition criterion.

Source code in src/gemseo_mlearning/active_learning/acquisition_criteria/base_acquisition_criterion.py
213
214
215
216
def update(self) -> None:
    """Update the acquisition criterion."""
    data = self._regressor_distribution.learning_set.output_dataset.to_numpy()
    self.output_range = data.max() - data.min()