Matern¶
- class probnum.randprocs.kernels.Matern(input_shape, lengthscale=1.0, nu=1.5)¶
Bases:
Kernel
,IsotropicMixin
Matern kernel.
Covariance function defined by
\begin{equation} k(x_0, x_1) = \frac{1}{\Gamma(\nu) 2^{\nu - 1}} \left( \frac{\sqrt{2 \nu}}{l} \lVert x_0 - x_1 \rVert_2 \right)^\nu K_\nu \left( \frac{\sqrt{2 \nu}}{l} \lVert x_0 - x_1 \rVert_2 \right), \end{equation}where \(K_\nu\) is a modified Bessel function. The Matern kernel generalizes the
ExpQuad
kernel via its additional parameter \(\nu\) controlling the smoothness of the function. For \(\nu \rightarrow \infty\) the Matern kernel converges to theExpQuad
kernel. A Gaussian process with Matern covariance function is \(\lceil \nu \rceil - 1\) times differentiable.- Parameters
input_shape (Union[int, Integral, integer, Iterable[Union[int, Integral, integer]]]) – Shape of the kernel’s input.
lengthscale (Union[int, float, complex, Number, number]) – Lengthscale \(l\) of the kernel. Describes the input scale on which the process varies.
nu (Union[int, float, complex, Number, number]) – Hyperparameter \(\nu\) controlling differentiability.
See also
ExpQuad
Exponentiated Quadratic / RBF kernel.
ProductMatern
Product Matern kernel.
Examples
>>> import numpy as np >>> from probnum.randprocs.kernels import Matern >>> K = Matern(input_shape=(), lengthscale=0.1, nu=2.5) >>> xs = np.linspace(0, 1, 3) >>> K.matrix(xs) array([[1.00000000e+00, 7.50933789e-04, 3.69569622e-08], [7.50933789e-04, 1.00000000e+00, 7.50933789e-04], [3.69569622e-08, 7.50933789e-04, 1.00000000e+00]])
Attributes Summary
Syntactic sugar for
len(input_shape)
.Shape of single, i.e. non-batched, arguments of the covariance function.
Syntactic sugar for
len(output_shape)
.Shape of single, i.e. non-batched, return values of the covariance function.
Methods Summary
__call__
(x0, x1)Evaluate the (cross-)covariance function(s).
matrix
(x0[, x1])A convenience function for computing a kernel matrix for two sets of inputs.
Attributes Documentation
- input_ndim¶
Syntactic sugar for
len(input_shape)
.
- input_shape¶
Shape of single, i.e. non-batched, arguments of the covariance function.
- output_ndim¶
Syntactic sugar for
len(output_shape)
.
- output_shape¶
Shape of single, i.e. non-batched, return values of the covariance function.
If
output_shape
is()
, theKernel
instance represents a single (cross-)covariance function. Otherwise, i.e. ifoutput_shape
is non-empty, theKernel
instance represents a tensor of (cross-)covariance functions whose shape is given byoutput_shape
.
Methods Documentation
- __call__(x0, x1)¶
Evaluate the (cross-)covariance function(s).
The evaluation of the (cross-covariance) function(s) is vectorized over the batch shapes of the arguments, applying standard NumPy broadcasting.
- Parameters
x0 (ArrayLike) – shape=
batch_shape_0 +
input_shape
– (Batch of) input(s) for the first argument of theKernel
.x1 (Optional[ArrayLike]) – shape=
batch_shape_1 +
input_shape
– (Batch of) input(s) for the second argument of theKernel
. Can also be set toNone
, in which case the function will behave as ifx1 = x0
(but it is implemented more efficiently).
- Returns
shape=
bcast_batch_shape +
output_shape
– The (cross-)covariance function(s) evaluated at(x0, x1)
. Since the function is vectorized over the batch shapes of the inputs, the output array contains the following entries:k_x0_x1[batch_idx + output_idx] = k[output_idx]( x0[batch_idx, ...], x1[batch_idx, ...], )
where we assume that
x0
andx1
have been broadcast to a common shapebcast_batch_shape +
input_shape
, and whereoutput_idx
andbatch_idx
are indices compatible withoutput_shape
andbcast_batch_shape
, respectively. Byk[output_idx]
we refer to the covariance function at indexoutput_idx
in the tensor of covariance functions represented by theKernel
instance.- Return type
k_x0_x1
- Raises
ValueError – If one of the input shapes is not of the form
batch_shape_{0,1} +
input_shape
.ValueError – If the inputs can not be broadcast to a common shape.
See also
matrix
Convenience function to compute a kernel matrix, i.e. a matrix of pairwise evaluations of the kernel on two sets of points.
Examples
See documentation of class
Kernel
.
- matrix(x0, x1=None)¶
A convenience function for computing a kernel matrix for two sets of inputs.
This is syntactic sugar for
k(x0[:, None], x1[None, :])
. Hence, it computes the matrix (stack) of pairwise covariances between two sets of input points. Ifk
represents a single covariance function, then the resulting matrix will be symmetric positive-(semi)definite forx0 == x1
.- Parameters
x0 (ArrayLike) – shape=
(M,) +
input_shape
orinput_shape
– Stack of inputs for the first argument of theKernel
.x1 (Optional[ArrayLike]) – shape=
(N,) +
input_shape
orinput_shape
– (Optional) stack of inputs for the second argument of theKernel
. Ifx1
is not specified, the function behaves as ifx1 = x0
(but it is implemented more efficiently).
- Returns
shape=
batch_shape +
output_shape
– The matrix / stack of matrices containing the pairwise evaluations of the (cross-)covariance function(s) onx0
andx1
. Depending on the shape of the inputs,batch_shape
is either(M, N)
,(M,)
,(N,)
, or()
.- Return type
kernmat
- Raises
ValueError – If the shapes of the inputs don’t match the specification.
See also
__call__
Evaluate the kernel more flexibly.
Examples
See documentation of class
Kernel
.