===================================================================
Generalized Gaussian Process Models Toolbox (GPML Add-on)
v 1.0
Antoni B. Chan
Department of Computer Science
City University of Hong Kong
Copyright (c) by Antoni B. Chan, 2013-11-27.
===================================================================
==== DESCRIPTION ====
This is a toolbox for generalized Gaussian process models (GGPM). The toolbox
is implemented as an add-on to the GPML toolbox for Matlab/Octave.
The toolbox contains likelihood functions for GGPMs, as well as a Taylor inference function.
GPML version 3.4 is supported.
==== INSTALLATION ====
First follow the installation instructions as GPML.
Afterwards, use the following command to add GPML and GGPM to the MATLAB
search path:
addpath(genpath('/path/to/GPML'));
addpath(genpath('/path/to/GGPM'));
==== DEMOS & USAGE ====
The GGPM add-on follows the same usage as the GPML toolbox. A GGPM likelihood function is passed to a GPML function using a cell array, for example, we define
lik = {@likExpo_generic, @likExGamma};
Here the "@" means function handle. This lik variable can now be passed to the GPML functions like a standard likelihood function.
Some examples of using GGPMs are in the "ggpm_demo" directory:
ggpm_example.m -- simple tutorial of using GGPM (1D input)
ggpm_example_2d.m -- simple tutorial of using GGPM on 2D inputs
ggpm_demo.m -- examples for all available GGPMs
==== TOOLBOX CONTENTS ====
The contents of the GGPM toolbox are listed below. Here only the important functions for
the user are highlighted. Functions from GPML or modified from GPML are annotated as such.
--- demos using GGPMs (GGPM_demo/) ---
ggpm_example.m -- simple tutorial of using GGPM (1D input)
ggpm_example_2d.m -- simple tutorial of using GGPM on 2D inputs
ggpm_demo.m -- examples for all available GGPMs
--- GGPM-based likelihood functions (likExpo/) ---
likExBernoilli.m -- Bernoulli, aka logistic(equivalent to likLogistic.m in GPML)
likExBeta.m -- Beta likelihood
likExBinomial.m -- Binomial likelihood
likExBinomialFixedN.m -- Binomial likelihood w/ fixed N
likExCOMPoisson.m -- COM Poisson likelihood
likExCOMPoissonLinear.m -- linearized COM Poisson
likExExponential.m -- Exponential likelihood
likExGamma.m -- Gamma likelihood (shape is dispersion)
likExGammaScale.m -- Gamma likelihood (scale is dispersion)
likExGammaScale1.m -- Gamma likelihood (scale is dispersion, shape=1)
likExGammaScale2.m -- Gamma likelihood (scale is dispersion, shape=2), i.e., chi-squared distribution
likExGauss.m -- Gaussian likelihood (equivalent to likGauss.m in GPML)
likExGeometric.m -- Geometric likelihood
likExInvGauss.m -- Inverse Gaussian likelihood
likExNegBinomial2.m -- Negative Binomial likelihood
likExPoisson.m -- Poisson likelihood
likExPoissonLinear.m -- Poisson likelihood w/ linearized link
likExpo_generic.m -- generic exponential family likelihood, which implements the functionality of a standard GPML likelihood function. All likEx* functions pass their output to this function.
--- inference methods for univariate GPs (inf/) ---
infTaylor.m -- Taylor approximate inference
==== Creating new likelihoods ====
The likExpo_generic function can be used to create new likelihood functions based on exponential family distributions. The first argument of likExpo_generic is a structure, which contains all the exponential family parameter functions and their derivatives. You can also specify different methods for calculating EP moments. See the help in this function for more on how to use it.
Currently, all the likEx* functions are implemented to return the likelihood structure. The actual mechanism that calls the likelihood function is in the GPML functions, and involves using feval on a cell array of function handles. Here is an example:
lik = {@likExpo_generic, @likExGamma};
feval(lik{:}, other_arguments...);
which is equivalent to
likExpo_generic(likExGamma, other_arguments...);
So the effect is to call the likExpo_generic function, where the first input is the likelihood structure returned by the likExGamma function, followed by the remaining inputs.
==== REFERENCES ====
If you use this code, please cite the CVPR paper [1].
[1] A. B. Chan and D. Dong. "Generalized Gaussian Process Models",
in IEEE Conf. Computer Vision and Pattern Recognition (CVPR), Colorado Springs, June 2011.
[2] L. Shang and A. B. Chan. "On approximate inference for generalized Gaussian process models", ArXiv, 2013. http://arxiv.org/abs/1311.6371
[3] C. E. Rasmussen and C. K. I. Williams. Gaussian Processes for Machine Learning. MIT Press, 2006.
==== CONTACT INFO ====
Please send comments, bug reports, feature requests to Antoni Chan (abchan at cityu dot edu . hk).
==== CHANGE LOG ====
2013-11-27: v1.0 - updated to use GPML v3.4
2011-08-05: v0.0 - initial version: GGPMs using likEx* functions.