Supplementary code for the paper "Stationary Kernels and Gaussian Processes on Lie Groups and their Homogeneous Spaces"
This is a prototypical implementation for the methods described in Stationary Kernels and Gaussian Processes on Lie Groups and their Homogeneous Spaces
(part I, part II), a two-part series of papers by I. Azangulov, A. Smolensky, A. Terenin and V. Borovitskiy.
The library features (approximate) computational techniques for heat and Matérn kernels on compact Lie groups, their homogeneous spaces and non-compact symmetric spaces. It allows approximate kernel evaluation and differentiation, with positive semidefiniteness guarantees, and efficient sampling of the corresponding Gaussian process.
Example. Samples from a Gaussian process with heat kernel covariance on the torus $\mathbb{T}^2$, on the real projective plane $\mathrm{RP}^2$ and on the sphere $\mathbb{S}^2$:
The following spaces are implemented:
S^n
.P^n
and oriented Grassmannians.from lie_stationary_kernels.spaces import Grassmannian
from lie_stationary_kernels.spectral_kernel import RandomPhaseKernel
from lie_stationary_kernels.spectral_measure import MaternSpectralMeasure
from lie_stationary_kernels.prior_approximation import RandomPhaseApproximation
# First of all let us choose a space
space = Grassmannian(n, m)
# Then select a spectral measure
measure = MaternSpectralMeasure(space.dim, lengthscale, nu, variance)
# Finally we create kernel and sampler
kernel = RandomPhaseKernel(measure, space)
sampler = RandomPhaseApproximation(kernel, phase_order)
# Create two sets of random points
x = space.rand(10)
y = space.rand(20)
# Then
cov = kernel(x,y) # is 10x20 matrix --- covariance matrix
sample = sampler(x) # is 10x1 vector --- random realization at x
Kernels:
With EigenSumKernel
the covariance is computed exactly up to truncation using manifold Fourier features. Works with CompactLieGroup
.
With RandomPhaseKernel
the covariance is computed using generalized random phase Fourier features. Works with CompactLieGroup
and СompactHomogeneousSpace
.
With RandomFourierKernel
the covariance is computed using symmetric space random Fourier features. Works with NonCompactSymmetricSpace
.
Samplers:
RandomPhaseApproximation
is used for compact spaces (CompactHomogeneousSpace
, CompactLieGroup
).
RandomFourierApproximation
is used for non-compact spaces (NonCompactSymmetricSpace
).
[Optionally] Create virtual environment.
Install PyTorch.
[Optionally] To use the sphere and projective space, install SphericalHarmonics following the instructions.
Install the library by running
pip install git+https://github.com/imbirik/LieStationaryKernels.git
pip install -e ./