bayesquad

probnum.quad.bayesquad(fun, input_dim, kernel=None, domain=None, measure=None, policy='bmc', max_evals=None, var_tol=None, rel_tol=None, batch_size=1, rng=Generator(PCG64) at 0x7F92DAFAC200)[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]\) or \(\Omega = \mathbb{R}^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\) on \(\mathbb{R}^D\).

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. It needs to accept a shape=(n_eval, input_dim) np.ndarray and return a shape=(n_eval,) np.ndarray.

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

  • kernel (Optional[Kernel]) – The kernel used for the GP model. Defaults to the ExpQuad kernel.

  • domain (Optional[DomainLike]) – The integration domain. Contains lower and upper bound as scalar or np.ndarray. Obsolete if measure is given.

  • measure (Optional[IntegrationMeasure]) – The integration measure. Defaults to the Lebesgue measure on domain.

  • policy (Optional[str]) –

    Type of acquisition strategy to use. Defaults to ‘bmc’. Options are

    Bayesian Monte Carlo 2

    bmc

  • max_evals (Optional[IntLike]) – Maximum number of function evaluations.

  • var_tol (Optional[FloatLike]) – Tolerance on the variance of the integral.

  • rel_tol (Optional[FloatLike]) – Tolerance on consecutive updates of the integral mean.

  • batch_size (Optional[IntLike]) – Number of new observations at each update.

  • rng (Optional[np.random.Generator]) – Random number generator. Used by Bayesian Monte Carlo other random sampling policies. Optional. Default is np.random.default_rng().

Returns

  • integral – The integral belief of \(F\) subject to the provided measure or domain.

  • info – Information on the performance of the method.

Raises

ValueError – If neither a domain nor a measure are given.

Warns

When ``domain`` is given but not used.

Return type

Tuple[Normal, BQIterInfo]

Notes

If multiple stopping conditions are provided, the method stops once one of them is satisfied. If no stopping condition is provided, the default values are max_evals = 25 * input_dim and var_tol = 1e-6.

See also

bayesquad_from_data

Computes the integral \(F\) using a given dataset of nodes and function evaluations.

References

1

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

2

Rasmussen, C. E., and Z. Ghahramani, Bayesian Monte Carlo, Advances in Neural Information Processing Systems, 2003, 505-512.

Examples

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