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)