SHOGUN  6.1.3
SingleFITCLaplaceInferenceMethod.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  */
31 
32 #ifndef CSINGLEFITCLAPLACEINFERENCEMETHOD_H
33 #define CSINGLEFITCLAPLACEINFERENCEMETHOD_H
34 
35 
36 #include <shogun/lib/config.h>
38 
39 namespace shogun
40 {
59 {
60 friend class CFITCPsiLine;
63 public:
66 
77  CMeanFunction* mean, CLabels* labels, CLikelihoodModel* model,
78  CFeatures* inducing_features);
79 
81 
86  virtual const char* get_name() const { return "SingleFITCLaplaceInferenceMethod"; }
87 
88 
94 
101 
106  virtual bool supports_regression() const
107  {
108  check_members();
109  return m_model->supports_regression();
110  }
111 
116  virtual bool supports_binary() const
117  {
118  check_members();
119  return m_model->supports_binary();
120  }
121 
128 
142 
157 
159  virtual void update();
160 
173 
178  virtual void register_minimizer(Minimizer* minimizer);
179 
180 protected:
182  virtual void compute_gradient();
183 
185  virtual void update_init();
186 
188  virtual void update_alpha();
189 
191  virtual void update_chol();
192 
194  virtual void update_approx_cov();
195 
199  virtual void update_deriv();
200 
209  const TParameter* param);
210 
219  const TParameter* param);
220 
229  const TParameter* param);
230 
239  const TParameter* param);
240 
249 
259 
269 
280 
288 
298 
314 
322 
330 
336 
342 
343 private:
345  void init();
346 
347 protected:
348 
351 
354 
357 
360 
363 
366 
369 
372 
375 
383 
386 
388  bool m_Wneg;
389 };
390 
393 {
394 public:
396 
397  virtual const char* get_name() const { return "SingleFITCLaplaceNewtonOptimizer"; }
398 
400 
404  void set_target(CSingleFITCLaplaceInferenceMethod *obj);
405 
409  void unset_target(bool is_unref);
410 
415  virtual float64_t minimize();
416 
421  virtual void set_minimization_max(float64_t max) { m_opt_max=max; }
422 
427  virtual void set_minimization_tolerance(float64_t tol) { m_opt_tolerance=tol; }
428 
433  virtual void set_newton_iterations(int32_t iter) { m_iter=iter; }
434 
439  virtual void set_newton_tolerance(float64_t tol) { m_tolerance=tol; }
440 private:
441  void init();
442 
445 
447  float64_t m_tolerance;
448 
450  index_t m_iter;
451 
453  float64_t m_opt_tolerance;
454 
456  float64_t m_opt_max;
457 };
458 
459 }
460 #endif /* CSINGLEFITCLAPLACEINFERENCEMETHOD_H */
virtual SGVector< float64_t > get_derivative_wrt_inducing_noise(const TParameter *param)
void get_gradient_wrt_alpha(SGVector< float64_t > gradient)
int32_t index_t
Definition: common.h:72
The class Labels models labels, i.e. class assignments of objects.
Definition: Labels.h:43
The build-in minimizer for SingleFITCLaplaceInference.
parameter struct
virtual SGVector< float64_t > get_derivative_wrt_inference_method(const TParameter *param)
virtual SGVector< float64_t > get_derivative_wrt_mean(const TParameter *param)
static CSingleFITCLaplaceInferenceMethod * obtain_from_generic(CInference *inference)
An abstract class of the mean function.
Definition: MeanFunction.h:49
std::enable_if<!std::is_same< T, complex128_t >::value, float64_t >::type mean(const Container< T > &a)
virtual void check_members() const
double float64_t
Definition: common.h:60
virtual bool supports_regression() const
EInferenceType
Definition: Inference.h:53
virtual bool supports_binary() const
virtual SGVector< float64_t > derivative_helper_when_Wneg(SGVector< float64_t > res, const TParameter *param)
virtual SGVector< float64_t > compute_mvmZ(SGVector< float64_t > x)
#define SG_UNREF(x)
Definition: SGObject.h:53
all of classes and functions are contained in the shogun namespace
Definition: class_list.h:18
The Inference Method base class.
Definition: Inference.h:81
virtual float64_t get_derivative_implicit_term_helper(SGVector< float64_t > d)
The class Features is the base class of all feature objects.
Definition: Features.h:69
virtual float64_t get_derivative_related_cov(SGVector< float64_t > ddiagKi, SGMatrix< float64_t > dKuui, SGMatrix< float64_t > dKui)
virtual SGVector< float64_t > compute_mvmK(SGVector< float64_t > al)
The Kernel base class.
The minimizer base class.
Definition: Minimizer.h:43
virtual SGMatrix< float64_t > get_chol_inv(SGMatrix< float64_t > mtx)
The FITC approximation inference method class for regression and binary Classification. Note that the number of inducing points (m) is usually far less than the number of input points (n). (the time complexity is computed based on the assumption m < n)
The Fully Independent Conditional Training inference base class for Laplace and regression for 1-D la...
T max(const Container< T > &a)
virtual SGVector< float64_t > get_derivative_wrt_inducing_features(const TParameter *param)
CLikelihoodModel * m_model
Definition: Inference.h:470
virtual SGVector< float64_t > get_derivative_wrt_kernel(const TParameter *param)
The Likelihood model base class.
virtual float64_t get_derivative_related_mean(SGVector< float64_t > dmu)
virtual SGVector< float64_t > get_derivative_wrt_likelihood_model(const TParameter *param)

SHOGUN Machine Learning Toolbox - Documentation