Kernels
All kernels inherit from lightgp.Kernel and support composition via
the +, *, and Scale operators.
kernel = gp.Scale(gp.RBF()) + gp.Scale(gp.Periodic())
Base class
- class lightgp.Kernel
Abstract base for all kernels. Subclasses implement
compute(),compute_diag(), parameter access, and a printablename().- get_params() list[float]
Flat list of log-hyperparameters. Order is fixed per-kernel and matches
set_params().
Concrete kernels
- class lightgp.RBF(length_scale: float = 1.0, signal_var: float = 1.0)
Radial Basis Function (squared exponential) kernel.
\[k(x, x') = \sigma^2 \exp\!\left(-\tfrac{\|x - x'\|^2}{2\ell^2}\right)\]- Parameters:
length_scale – Length scale \(\ell\). Larger values produce smoother fits.
signal_var – Signal variance \(\sigma^2\). Controls the prior output amplitude.
- class lightgp.Matern(nu: float = 2.5, length_scale: float = 1.0, signal_var: float = 1.0)
Matérn kernel with smoothness parameter \(\nu\).
\[k_{5/2}(r) = \sigma^2 \left(1 + \tfrac{\sqrt{5}\,r}{\ell} + \tfrac{5 r^2}{3 \ell^2}\right)\, \exp\!\left(-\tfrac{\sqrt{5}\,r}{\ell}\right)\]- Parameters:
nu – Smoothness; one of
0.5(rough),1.5(once-differentiable), or2.5(twice-differentiable).length_scale – As for
RBF.signal_var – As for
RBF.
- class lightgp.Periodic(length_scale: float = 1.0, period: float = 1.0, signal_var: float = 1.0)
Periodic kernel for cyclical signals.
\[k(x, x') = \sigma^2 \exp\!\left( -\tfrac{2 \sin^2(\pi |x-x'| / p)}{\ell^2}\right)\]- Parameters:
period – Period
pof the pattern.length_scale – Smoothness within one period.
Composition
- class lightgp.Scale(base: Kernel, scale: float = 1.0)
Wraps a kernel with a learnable scalar output scale
exp(log_scale). Adds one log-hyperparameter to the parameter list (prepended in front of the base kernel’s parameters).\[k_{\text{scaled}}(x, x') = \exp(\text{log\_scale}) \cdot k_{\text{base}}(x, x')\]
Example
A composed kernel for the Mauna Loa CO₂ benchmark (multi-decade rising trend + annual seasonal cycle + medium-term irregularities):
trend = gp.Scale(gp.RBF(length_scale=10.0))
seasonal = gp.Scale(gp.Periodic(period=1.0))
medium = gp.Scale(gp.RBF(length_scale=0.5))
kernel = trend + seasonal + medium
print(kernel.name())
# ((Scale(RBF) + Scale(Periodic)) + Scale(RBF))
print(kernel.num_params()) # 9