SHOGUN  4.1.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
SparseVGInferenceMethod.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) The Shogun Machine Learning Toolbox
3  * Written (W) 2015 Wu Lin
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions are met:
8  *
9  * 1. Redistributions of source code must retain the above copyright notice, this
10  * list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright notice,
12  * this list of conditions and the following disclaimer in the documentation
13  * and/or other materials provided with the distribution.
14  *
15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
16  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
19  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25  *
26  * The views and conclusions contained in the software and documentation are those
27  * of the authors and should not be interpreted as representing official policies,
28  * either expressed or implied, of the Shogun Development Team.
29  *
30  * Code adapted from
31  * http://www.aueb.gr/users/mtitsias/code/varsgp.tar.gz
32  */
33 
34 #ifndef CSPARSEVGINFERENCEMETHOD_H
35 #define CSPARSEVGINFERENCEMETHOD_H
36 
37 #include <shogun/lib/config.h>
38 
39 #ifdef HAVE_EIGEN3
40 
42 
43 namespace shogun
44 {
55 {
56 public:
59 
69  CSparseVGInferenceMethod(CKernel* kernel, CFeatures* features,
70  CMeanFunction* mean, CLabels* labels, CLikelihoodModel* model,
71  CFeatures* inducing_features);
72 
73  virtual ~CSparseVGInferenceMethod();
74 
79  virtual const char* get_name() const { return "SparseVGInferenceMethod"; }
80 
86 
93 
106 
107 
120 
125  virtual bool supports_regression() const
126  {
127  check_members();
128  return m_model->supports_regression();
129  }
130 
147 
164 
166  virtual void update();
167 protected:
169  virtual void check_members() const;
170 
172  virtual void update_alpha();
173 
175  virtual void update_chol();
176 
180  virtual void update_deriv();
181 
190  const TParameter* param);
191 
202  const TParameter* param);
203 
211  const TParameter* param);
212 
221  const TParameter* param);
222 
238 
240  virtual void compute_gradient();
241 protected:
242  /* inv_Lm=inv(Lm) where Lm*Lm'=Kmm */
244  /* Knm*inv_Lm */
246  /* invLa=inv(La) where La*La'=sigma2*eye(m)+inv_Lm*Kmn*Knm*inv_Lm' */
248  /* yy=(y-meanfun)'*(y-meanfun) */
250  /* the term used to compute gradient wrt likelihood and marginal likelihood*/
252  /* square of sigma from Gaussian likelihood*/
254  /* the trace term to compute marginal likelihood*/
256  /* a matrix used to compute gradients wrt kernel (Kmm)*/
258  /* a matrix used to compute gradients wrt kernel (Knm)*/
260 private:
262  void init();
263 };
264 }
265 #endif /* HAVE_EIGEN3 */
266 #endif /* CSPARSEVGINFERENCEMETHOD_H */
virtual const char * get_name() const
The Inference Method base class.
virtual SGVector< float64_t > get_derivative_wrt_mean(const TParameter *param)
The class Labels models labels, i.e. class assignments of objects.
Definition: Labels.h:43
virtual SGVector< float64_t > get_posterior_mean()
parameter struct
An abstract class of the mean function.
Definition: MeanFunction.h:49
static CSparseVGInferenceMethod * obtain_from_generic(CInferenceMethod *inference)
virtual SGMatrix< float64_t > get_posterior_covariance()
virtual float64_t get_negative_log_marginal_likelihood()
double float64_t
Definition: common.h:50
virtual bool supports_regression() const
virtual float64_t get_derivative_related_cov(SGVector< float64_t > ddiagKi, SGMatrix< float64_t > dKuui, SGMatrix< float64_t > dKui)
The sparse inference base class for classification and regression for 1-D labels (1D regression and b...
virtual EInferenceType get_inference_type() const
all of classes and functions are contained in the shogun namespace
Definition: class_list.h:18
The class Features is the base class of all feature objects.
Definition: Features.h:68
virtual SGVector< float64_t > get_derivative_wrt_likelihood_model(const TParameter *param)
virtual SGVector< float64_t > get_diagonal_vector()
The Kernel base class.
Definition: Kernel.h:158
The inference method class based on the Titsias' variational bound. For more details, see Titsias, Michalis K. "Variational learning of inducing variables in sparse Gaussian processes." International Conference on Artificial Intelligence and Statistics. 2009.
The Likelihood model base class.
CLikelihoodModel * m_model
virtual SGVector< float64_t > get_derivative_wrt_inducing_noise(const TParameter *param)
virtual SGVector< float64_t > get_derivative_wrt_inducing_features(const TParameter *param)

SHOGUN Machine Learning Toolbox - Documentation