A `ProbabilisticModel` is a mapping from a feature domain to a probability distribution over
a target domain.
@features The shape of the feature domain.
@targets The shape of the target domain.
@marginal The type of mulitvariate marginal distribution over the target domain.
Parameters: features, targets, marginal, model
Constraints: Distribution marginal
Methods:
marginalise : model -> Tensor (S n :: features) F64 -> Tag (marginal targets (S n))
Return the marginal distribution over the target domain at the specified feature values.