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_on_observations(dataset)[source]#

Condition on observations to create posterior.

This implements the core OILMM inference algorithm: 1. Project observations: y_latent = T @ y 2. Condition M independent GPs on projected data 3. Return OILMMPosterior wrapping the M posteriors

Parameters:

dataset (Dataset) – Training data with X [N, D] and y [N, P]

Returns:

OILMMPosterior containing M independent posteriors

Return type:

OILMMPosterior