SHOGUN  4.2.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
LogitVGPiecewiseBoundLikelihood.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) The Shogun Machine Learning Toolbox
3  * Written (w) 2014 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  * https://github.com/emtiyaz/VariationalApproxExample
32  * and the reference paper is
33  * Marlin, Benjamin M., Mohammad Emtiyaz Khan, and Kevin P. Murphy.
34  * "Piecewise Bounds for Estimating Bernoulli-Logistic Latent Gaussian Models." ICML. 2011.
35  */
36 
37 #ifndef _LOGITVGPIECEWISEBOUNDLIKELIHOOD_H_
38 #define _LOGITVGPIECEWISEBOUNDLIKELIHOOD_H_
39 
40 #include <shogun/lib/config.h>
41 
42 
45 
46 namespace shogun
47 {
64 {
65 public:
67 
69 
74  virtual const char* get_name() const { return "LogitVGPiecewiseBoundLikelihood"; }
75 
80  virtual void set_variational_bound(SGMatrix<float64_t> bound);
81 
91 
103 
116 
123  virtual bool supports_derivative_wrt_hyperparameter() const { return false; }
124 
125 
135 
138 
139 protected:
140 
142  virtual void init_likelihood();
143 
144 private:
146  void init();
147 
152  void precompute();
153 
155  SGMatrix<float64_t> m_bound;
156 
158  SGMatrix<float64_t> m_pl;
159 
161  SGMatrix<float64_t> m_ph;
162 
164  SGMatrix<float64_t> m_cdf_diff;
165 
167  SGMatrix<float64_t> m_l2_plus_s2;
168 
170  SGMatrix<float64_t> m_h2_plus_s2;
171 
173  SGMatrix<float64_t> m_weighted_pdf_diff;
174 };
175 }
176 #endif /* _LOGITVGPIECEWISEBOUNDLIKELIHOOD_H_ */
The class Labels models labels, i.e. class assignments of objects.
Definition: Labels.h:43
The variational Gaussian Likelihood base class. The variational distribution is Gaussian.
parameter struct
Class that models Logit likelihood and uses variational piecewise bound to approximate the following ...
virtual void set_variational_bound(SGMatrix< float64_t > bound)
virtual SGVector< float64_t > get_variational_first_derivative(const TParameter *param) const
virtual SGVector< float64_t > get_first_derivative_wrt_hyperparameter(const TParameter *param) const
all of classes and functions are contained in the shogun namespace
Definition: class_list.h:18
virtual bool set_variational_distribution(SGVector< float64_t > mu, SGVector< float64_t > s2, const CLabels *lab)

SHOGUN Machine Learning Toolbox - Documentation