bayesquad

probnum.quad.bayesquad(fun, input_dim, kernel=None, domain=None, nevals=None, measure=None, method='vanilla', policy='bmc', rng=None)[source]

Infer the solution of the uni- or multivariate integral \(\int_\Omega f(x) d \mu(x)\) on a hyper-rectangle \(\Omega = [a_1, b_1] \times \cdots \times [a_D, b_D]\).

Bayesian quadrature (BQ) infers integrals of the form

\[F = \int_\Omega f(x) d \mu(x),\]

of a function \(f:\mathbb{R}^D \mapsto \mathbb{R}\) integrated on the domain \(\Omega \subset \mathbb{R}^D\) against a measure \(\mu: \mathbb{R}^D \mapsto \mathbb{R}\).

Bayesian quadrature methods return a probability distribution over the solution \(F\) with uncertainty arising from finite computation (here a finite number of function evaluations). They start out with a random process encoding the prior belief about the function \(f\) to be integrated. Conditioned on either existing or acquired function evaluations according to a policy, they update the belief on \(f\), which is translated into a posterior measure over the integral \(F\). See Briol et al. 1 for a review on Bayesian quadrature.

Parameters
  • fun (Callable) – Function to be integrated.

  • input_dim (int) – Input dimension of the integration problem

  • kernel (Optional[Kernel]) – the kernel used for the GP model

  • domain (Optional[Tuple[Union[ndarray, Real], Union[ndarray, Real]]]) – shape=(dim,) – Domain of integration. Contains lower and upper bound as int or ndarray.

  • measure (Optional[IntegrationMeasure]) – Integration measure, defaults to the Lebesgue measure.

  • nevals (Optional[int]) – Number of function evaluations.

  • method (str) –

    Type of Bayesian quadrature to use. The available options are

    vanilla

    vanilla

    WSABI

    wsabi

  • policy (str) –

    Type of acquisition strategy to use. Options are

    Bayesian Monte Carlo

    bmc

    Uncertainty Sampling

    us

    Mutual Information

    mi

    Integral Variance

    iv

  • rng (Optional[Generator]) – Random number generator. Required for Bayesian Monte Carlo policies. Optional. Default is np.random.default_rng().

Return type

Tuple[Normal, Dict]

Returns

  • integral – The integral of func on the domain.

  • info – Information on the performance of the method.

References

1

Briol, F.-X., et al., Probabilistic integration: A role in statistical computation?, Statistical Science 34.1, 2019, 1-22, 2019

Examples

>>> import numpy as np
>>> input_dim = 1
>>> domain = (0, 1)
>>> def f(x):
...     return x
>>> F, info = bayesquad(fun=f, input_dim=input_dim, domain=domain)
>>> print(F.mean)
0.5