class gpr::FactorizedLikelihood¶
Overview¶
#include <FactorizedLikelihood.h>
class FactorizedLikelihood {
public:
// methods
void setEigendecomposition(const Eigen::VectorXd& eigenvalues, const EigenMatrix& eigenvectors, const Eigen::VectorXd& targets);
double evaluateGP(double noise_variance) const;
double evaluateTP(double noise_variance, double a, double b) const;
double analyticalPrefactor(double noise_variance) const;
double tpPrefactor(double noise_variance, double a, double b) const;
Eigen::Index dataSize() const;
};
Detailed Documentation¶
Methods¶
void setEigendecomposition(const Eigen::VectorXd& eigenvalues, const EigenMatrix& eigenvectors, const Eigen::VectorXd& targets)
Cache the eigendecomposition of K_XX for repeated noise sweeps.
Parameters:
eigenvalues |
D from eigh(K_XX), shape (n,) |
eigenvectors |
U from eigh(K_XX), shape (n, n) |
targets |
y vector, shape (n,) |
double evaluateGP(double noise_variance) const
GP negative log marginal likelihood at given noise level.
Uses the analytical prefactor: prefactor = mean(UTY^2 / D_n).
Parameters:
noise_variance |
sigma_n^2 in linear space |
Returns:
NLML value (lower is better)
double evaluateTP(double noise_variance, double a, double b) const
TP negative log marginal likelihood at given noise level.
Uses the inverse-gamma hyperprior on the signal variance.
Parameters:
noise_variance |
sigma_n^2 in linear space |
a |
inverse-gamma shape parameter |
b |
inverse-gamma scale parameter |
Returns:
NLML value (lower is better)
double analyticalPrefactor(double noise_variance) const
Analytically optimal GP prefactor (signal variance).
Parameters:
noise_variance |
sigma_n^2 |
Returns:
prefactor = mean(UTY^2 / D_n)
double tpPrefactor(double noise_variance, double a, double b) const
TP prefactor from inverse-gamma hyperprior.
Parameters:
noise_variance |
sigma_n^2 |
a |
shape parameter |
b |
scale parameter |
Returns:
prefactor = (2b + S) / (2a + n - 2)