bayesquad¶
-
probnum.quad.
bayesquad
(fun, input_dim, kernel=None, domain=None, nevals=None, measure=None, method='vanilla', policy='bmc')[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 problemkernel (
Optional
[Kernel
]) – the kernel used for the GP modeldomain (
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.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
- Return type
- 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 >>> np.random.seed(0) >>> 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.5000