OrthogonalMixingMatrix#
- class gpjax.models.OrthogonalMixingMatrix(num_outputs, num_latent_gps, key)[source]#
Bases:
ModuleMixing matrix H = U S^(1/2) with orthogonal columns.
Parameterizes an orthogonal mixing matrix for OILMM where: - U in R^(p x m) has orthonormal columns (U^T U = I_m) - S > 0 is a diagonal scaling matrix (m x m) - H = U S^(1/2) is the mixing matrix - T = S^(-1/2) U^T is the projection matrix
The orthogonality of U ensures that the projected noise is diagonal:
Sigma_T = T Sigma T^T = sigma^2 S^(-1) + Dwhere sigma^2 is observation noise and D is latent noise.
- U_latent#
Unconstrained matrix for SVD orthogonalization
- Type:
- S#
Positive diagonal scaling
- obs_noise_variance#
Homogeneous observation noise (sigma^2)
- latent_noise_variance#
Per-latent heterogeneous noise (D), non-negative
- property H: Float[jaxlib._jax.Array, 'P M']#
Mixing matrix H = U S^(1/2).
Maps from latent space (m dimensions) to output space (p dimensions). Each column is an orthogonal basis vector scaled by sqrt(S_i).
- property H_squared: Float[jaxlib._jax.Array, 'P M']#
Element-wise H^2 for fast diagonal variance reconstruction.
When computing marginal variances, we need H^2 @ latent_vars:
var_p = sum_m H^2_pm * var_mThis property caches H^2 to avoid recomputation.
- property T: Float[jaxlib._jax.Array, 'M P']#
Projection matrix T = S^(-1/2) U^T.
Projects from output space (p dimensions) to latent space (m dimensions). This is the left pseudo-inverse of H: T @ H = I_m.
- property U: Float[jaxlib._jax.Array, 'P M']#
Orthonormal columns via SVD.
Uses SVD to project U_latent onto the Stiefel manifold (orthonormal columns). This ensures U^T U = I_m exactly.
- property inv_sqrt_S: Float[jaxlib._jax.Array, 'M']#
S^(-1/2).
- Type:
Inverse square root of S diagonal
- property projected_noise_variance: Float[jaxlib._jax.Array, 'M']#
Sigma_T = sigma^2 S^(-1) + D.
This is the noise variance for each independent latent GP after projection. The orthogonality of U ensures this is diagonal, which is what makes OILMM tractable.
- Returns:
Array of shape [M] with noise variance for each latent GP.
- Type:
Diagonal projected noise
- property sqrt_S: Float[jaxlib._jax.Array, 'M']#
S^(1/2).
- Type:
Square root of S diagonal