/** * @file LikelihoodFunction.h * @author Erik Rodner * @date 02/17/2010 */ #ifndef _NICE_OBJREC_LIKELIHOODFUNCTIONINCLUDE #define _NICE_OBJREC_LIKELIHOODFUNCTIONINCLUDE namespace OBJREC { /** @class LikelihoodFunction * abstract class for squash functions phi(y,f) * It can be used to define noise models for Gaussian * process classification * * @author Erik Rodner */ class LikelihoodFunction { protected: public: LikelihoodFunction(); virtual ~LikelihoodFunction(); /** * @brief third derivation of the likelihood function * The third derivation is important for Laplace approximation in * the GP framework. * * @param y label * @param f latent function value * * @return value of the third derivation */ virtual double thirdgrad ( double y, double f ) const = 0; /** * @brief second derivation of the likelihood function * * @param y label * @param f latent function value * * @return value of the second derivation */ virtual double hessian ( double y, double f ) const = 0; /** * @brief first derivation of the likelihood function * * @param y label * @param f latent function value * * @return value of the first derivation */ virtual double gradient ( double y, double f ) const = 0; /** * @brief logarithm of the likelihood function * * @param y label * @param f latent function value */ virtual double logLike ( double y, double f ) const = 0; /** * @brief calculate the likelihood * * @param y label * @param f latent function value * * @return likelihood value */ virtual double likelihood ( double y, double f ) const = 0; }; } #endif