class_docstr: The leave one out cross-validation (LOO-CV) likelihood from RW 5.4.2 for an exact Gaussian process with a
  Gaussian likelihood. This offers an alternative to the exact marginal log likelihood where we
  instead maximize the sum of the leave one out log probabilities :math:`\log p(y_i | X, y_{-i}, \theta)`.
  
  Naively, this will be O(n^4) with Cholesky as we need to compute `n` Cholesky factorizations. Fortunately,
  given the Cholesky factorization of the full kernel matrix (without any points removed), we can compute
  both the mean and variance of each removed point via a bordered system formulation making the total
  complexity O(n^3).
  
  The LOO-CV approach can be more robust against model mis-specification as it gives an estimate for the
  (log) predictive probability, whether or not the assumptions of the model is fulfilled.
  
  .. note::
      This module will not work with anything other than a :obj:`~gpytorch.likelihoods.GaussianLikelihood`
      and a :obj:`~gpytorch.models.ExactGP`. It also cannot be used in conjunction with
      stochastic optimization.
  
  :param ~gpytorch.likelihoods.GaussianLikelihood likelihood: The Gaussian likelihood for the model
  :param ~gpytorch.models.ExactGP model: The exact GP model
  
  Example:
      >>> # model is a gpytorch.models.ExactGP
      >>> # likelihood is a gpytorch.likelihoods.Likelihood
      >>> loocv = gpytorch.mlls.LeaveOneOutPseudoLikelihood(likelihood, model)
      >>>
      >>> output = model(train_x)
      >>> loss = -loocv(output, train_y)
      >>> loss.backward()
code: def __init__(self, likelihood, model):
      super().__init__(likelihood=likelihood, model=model)
      self.likelihood = likelihood
      self.model = model
  
file_path: gpytorch/gpytorch/mlls/leave_one_out_pseudo_likelihood.py
imports: import math
  import torch
  from torch import Tensor
  from ..distributions import MultivariateNormal
  from .exact_marginal_log_likelihood import ExactMarginalLogLikelihood
label_desc: Use image node_id 1 to create a new LeaveOneOutPseudoLikelihood object from inherited base classes: ExactMarginalLogLikelihood with example: obj = LeaveOneOutPseudoLikelihood(likelihood, model)