OILMMModel#

class gpjax.models.OILMMModel(num_outputs, num_latent_gps, kernel, key, mean_function=None)[source]#

Bases: Module

Orthogonal Instantaneous Linear Mixing Model.

OILMM decomposes multi-output GP inference into M independent single-output GP problems by using an orthogonal mixing matrix. This achieves O(n^3 m) complexity instead of O(n^3 m^3).

The generative model is:

x_i ~ GP(0, K(t,t'))          for i=1..M (latent GPs)
f(t) = H x(t)                  (mixing)
y | f ~ N(f(t), Sigma)         (noise: Sigma = sigma^2 I + H D H^T)

The orthogonality constraint (U^T U = I) ensures the projected noise is diagonal:

Sigma_T = T Sigma T^T = sigma^2 S^(-1) + D

enabling independent inference for each latent GP.

Parameters:
num_outputs#

Number of output dimensions (p)

Type:

int

num_latent_gps#

Number of latent GPs (m)

Type:

int

mixing_matrix#

OrthogonalMixingMatrix containing H, T, noise params

Type:

gpjax.models.oilmm.OrthogonalMixingMatrix

latent_priors#

Tuple of M independent Prior objects

Type:

tuple

condition(train_data)[source]#

Condition the model on data, returning the conditioned process.

Projects the observations into latent space and conditions the M independent latent GPs, caching each factorisation on the returned OILMMPosterior. Operator sugar: model | train_data.

Parameters:

train_data (Dataset) – Training data with X of shape (N, D) and y of shape (N, P).

Returns:

The conditioned OILMM process.

Return type:

OILMMPosterior

condition_on_observations(dataset)[source]#

Deprecated alias for condition().

Parameters:

dataset (Dataset) – Training data with X of shape (N, D) and y of shape (N, P).

Returns:

The conditioned OILMM process.

Return type:

OILMMPosterior