Skip to content

Commit

Permalink
rename LogitPiecewiseBoundLikelihood class
Browse files Browse the repository at this point in the history
  • Loading branch information
yorkerlin committed May 8, 2014
1 parent 5eb6ed3 commit bfabcfa
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 39 deletions.
10 changes: 5 additions & 5 deletions examples/undocumented/libshogun/variational_approx_example.cpp
Expand Up @@ -40,7 +40,7 @@
#include <shogun/lib/config.h>
#ifdef HAVE_EIGEN3
#include <shogun/base/init.h>
#include <shogun/machine/gp/LogitPiecewiseBoundLikelihood.h>
#include <shogun/machine/gp/LogitVariationalPiecewiseBoundLikelihood.h>
#include <shogun/distributions/classical/GaussianDistribution.h>
#include <shogun/optimization/lbfgs/lbfgs.h>
#include <shogun/mathematics/Math.h>
Expand Down Expand Up @@ -173,7 +173,7 @@ SGVector<float64_t> create_label(const char * fname, SGVector<float64_t> mu,
//The following struct is used to pass information when using the build-in L-BFGS component
struct Shared
{
CLogitPiecewiseBoundLikelihood *lik;
CLogitVariationalPiecewiseBoundLikelihood *lik;
SGVector<float64_t> y;
SGVector<float64_t> mu;
lbfgs_parameter_t lbfgs_param;
Expand Down Expand Up @@ -215,7 +215,7 @@ float64_t evaluate(void *obj, const float64_t *variable, float64_t *gradient,
Shared * obj_prt = static_cast<Shared *>(obj);

CBinaryLabels lab(obj_prt->y);
obj_prt->lik->set_distribution(obj_prt->m0, obj_prt->v, &lab);
obj_prt->lik->set_variational_distribution(obj_prt->m0, obj_prt->v, &lab);
Eigen::Map<Eigen::VectorXd> eigen_mu(obj_prt->mu.vector, obj_prt->mu.vlen);
Eigen::Map<Eigen::VectorXd> eigen_m(obj_prt->m0.vector, obj_prt->m0.vlen);

Expand Down Expand Up @@ -302,8 +302,8 @@ void run(const char * x_file, const char * y_file, const char * bound_file,

//load('llp.mat');
obj.bound = init_piecewise_bound(bound_file);
obj.lik = new CLogitPiecewiseBoundLikelihood();
obj.lik->set_bound(obj.bound);
obj.lik = new CLogitVariationalPiecewiseBoundLikelihood();
obj.lik->set_variational_bound(obj.bound);

//m0 = mu; % initial value all zero
obj.m0 = SGVector<float64_t> (num_sample);
Expand Down
2 changes: 1 addition & 1 deletion src/shogun/machine/gp/LikelihoodModel.h
Expand Up @@ -320,7 +320,7 @@ class CLikelihoodModel : public CSGObject
* @param lab labels/data used
*
*/
virtual void set_distribution(SGVector<float64_t> mu, SGVector<float64_t> s2, const CLabels* lab)
virtual void set_variational_distribution(SGVector<float64_t> mu, SGVector<float64_t> s2, const CLabels* lab)
{
SG_ERROR("Set variational distribution not implemented for %s\n", get_name());
}
Expand Down
Expand Up @@ -40,27 +40,29 @@

#ifdef HAVE_EIGEN3

#include <shogun/machine/gp/LogitPiecewiseBoundLikelihood.h>
#include <shogun/machine/gp/LogitVariationalPiecewiseBoundLikelihood.h>

using namespace shogun;
using namespace Eigen;

CLogitPiecewiseBoundLikelihood::CLogitPiecewiseBoundLikelihood()
namespace shogun
{

CLogitVariationalPiecewiseBoundLikelihood::CLogitVariationalPiecewiseBoundLikelihood()
: CLogitLikelihood()
{
init();
}

CLogitPiecewiseBoundLikelihood::~CLogitPiecewiseBoundLikelihood()
CLogitVariationalPiecewiseBoundLikelihood::~CLogitVariationalPiecewiseBoundLikelihood()
{
}

void CLogitPiecewiseBoundLikelihood::set_bound(SGMatrix<float64_t> bound)
void CLogitVariationalPiecewiseBoundLikelihood::set_variational_bound(SGMatrix<float64_t> bound)
{
m_bound = bound;
}

SGVector<float64_t> CLogitPiecewiseBoundLikelihood::get_variational_expection()
SGVector<float64_t> CLogitVariationalPiecewiseBoundLikelihood::get_variational_expection()
{
//This function is based on the Matlab code,
//function [f, gm, gv] = Ellp(m, v, bound, ind), to compute f
Expand Down Expand Up @@ -127,7 +129,7 @@ SGVector<float64_t> CLogitPiecewiseBoundLikelihood::get_variational_expection()
}


SGVector<float64_t> CLogitPiecewiseBoundLikelihood::get_variational_first_derivative(
SGVector<float64_t> CLogitVariationalPiecewiseBoundLikelihood::get_variational_first_derivative(
const TParameter* param) const
{
//This function is based on the Matlab code
Expand Down Expand Up @@ -237,7 +239,7 @@ SGVector<float64_t> CLogitPiecewiseBoundLikelihood::get_variational_first_deriva
return result;
}

void CLogitPiecewiseBoundLikelihood::set_distribution(SGVector<float64_t> mu,
void CLogitVariationalPiecewiseBoundLikelihood::set_variational_distribution(SGVector<float64_t> mu,
SGVector<float64_t> s2, const CLabels* lab)
{
REQUIRE(lab, "Labels are required (lab should not be NULL)\n");
Expand Down Expand Up @@ -267,7 +269,7 @@ void CLogitPiecewiseBoundLikelihood::set_distribution(SGVector<float64_t> mu,
precompute();
}

void CLogitPiecewiseBoundLikelihood::init()
void CLogitVariationalPiecewiseBoundLikelihood::init()
{
SG_ADD(&m_bound, "bound",
"Variational piecewise bound for logit likelihood",
Expand Down Expand Up @@ -305,7 +307,7 @@ void CLogitPiecewiseBoundLikelihood::init()
MS_NOT_AVAILABLE);
}

void CLogitPiecewiseBoundLikelihood::precompute()
void CLogitVariationalPiecewiseBoundLikelihood::precompute()
{
//This function is based on the Matlab code
//function [f, gm, gv] = Ellp(m, v, bound, ind), to compute common variables later
Expand Down Expand Up @@ -413,4 +415,5 @@ void CLogitPiecewiseBoundLikelihood::precompute()
eigen_h(eigen_h.size()-1) = h_bak;
}

} /* namespace shogun */
#endif /* HAVE_EIGEN3 */
Expand Up @@ -34,8 +34,8 @@
* "Piecewise Bounds for Estimating Bernoulli-Logistic Latent Gaussian Models." ICML. 2011.
*/

#ifndef _LOGITPIECEWISEBOUNDLIKELIHOOD_H_
#define _LOGITPIECEWISEBOUNDLIKELIHOOD_H_
#ifndef _LOGITVARIATIONALPIECEWISEBOUNDLIKELIHOOD_H_
#define _LOGITVARIATIONALPIECEWISEBOUNDLIKELIHOOD_H_

#include <shogun/lib/config.h>

Expand Down Expand Up @@ -65,24 +65,24 @@ namespace shogun
* m is the size of the pre-defined bound, which is the num_rows of bound passed in set_bound
* (In the reference Matlab code, m is 20)
*/
class CLogitPiecewiseBoundLikelihood : public CLogitLikelihood
class CLogitVariationalPiecewiseBoundLikelihood : public CLogitLikelihood
{
public:
CLogitPiecewiseBoundLikelihood();
CLogitVariationalPiecewiseBoundLikelihood();

virtual ~CLogitPiecewiseBoundLikelihood();
virtual ~CLogitVariationalPiecewiseBoundLikelihood();

/** returns the name of the likelihood model
*
* @return name LogitPiecewiseBoundLikelihood
*/
virtual const char* get_name() const { return "LogitPiecewiseBoundLikelihood"; }
virtual const char* get_name() const { return "LogitVariationalPiecewiseBoundLikelihood"; }

/** set the variational piecewise bound for logit likelihood
*
* @param bound variational piecewise bound
*/
virtual void set_bound(SGMatrix<float64_t> bound);
virtual void set_variational_bound(SGMatrix<float64_t> bound);

/** set the variational normal distribution given data and parameters
*
Expand All @@ -91,7 +91,7 @@ class CLogitPiecewiseBoundLikelihood : public CLogitLikelihood
* @param lab labels/data used
*
*/
virtual void set_distribution(SGVector<float64_t> mu, SGVector<float64_t> s2, const CLabels* lab);
virtual void set_variational_distribution(SGVector<float64_t> mu, SGVector<float64_t> s2, const CLabels* lab);

/** returns the expection of the logarithm of a logit distribution
* wrt the variational distribution using piecewise bound
Expand Down Expand Up @@ -124,7 +124,7 @@ class CLogitPiecewiseBoundLikelihood : public CLogitLikelihood

/** compute common variables later used in get_variational_expection
* and get_variational_first_derivative.
* Note that this method will automatically be called when set_distribution is called
* Note that this method will automatically be called when set_variational_distribution is called
*/
void precompute();

Expand Down Expand Up @@ -163,4 +163,4 @@ class CLogitPiecewiseBoundLikelihood : public CLogitLikelihood
};
}
#endif /* HAVE_EIGEN3 */
#endif /* _LOGITPIECEWISEBOUNDLIKELIHOOD_H_ */
#endif /* _LOGITVARIATIONALPIECEWISEBOUNDLIKELIHOOD_H_ */
Expand Up @@ -43,7 +43,7 @@
#ifdef HAVE_EIGEN3

#include <shogun/labels/BinaryLabels.h>
#include <shogun/machine/gp/LogitPiecewiseBoundLikelihood.h>
#include <shogun/machine/gp/LogitVariationalPiecewiseBoundLikelihood.h>
#include <shogun/mathematics/Math.h>
#include <gtest/gtest.h>

Expand Down Expand Up @@ -164,7 +164,7 @@ SGMatrix<float64_t> init_bound()
return bound;
}

TEST(LogitPiecewiseBoundLikelihood,get_variational_expection)
TEST(LogitVariationalPiecewiseBoundLikelihood,get_variational_expection)
{
float64_t rel_tolorance = 1e-2;
float64_t abs_tolorance;
Expand Down Expand Up @@ -209,10 +209,10 @@ TEST(LogitPiecewiseBoundLikelihood,get_variational_expection)
v[8] = 64;
v[9] = 625;

CLogitPiecewiseBoundLikelihood *lik = new CLogitPiecewiseBoundLikelihood();
lik->set_bound(bound);
CLogitVariationalPiecewiseBoundLikelihood *lik = new CLogitVariationalPiecewiseBoundLikelihood();
lik->set_variational_bound(bound);
CBinaryLabels* lab = new CBinaryLabels(y);
lik->set_distribution(m, v, lab);
lik->set_variational_distribution(m, v, lab);

SGVector<float64_t> fi = lik->get_variational_expection();

Expand Down Expand Up @@ -243,7 +243,7 @@ TEST(LogitPiecewiseBoundLikelihood,get_variational_expection)
SG_UNREF(lik);
}

TEST(LogitPiecewiseBoundLikelihood,get_variational_first_derivative_wrt_sigma2)
TEST(LogitVariationalPiecewiseBoundLikelihood,get_variational_first_derivative_wrt_sigma2)
{
float64_t rel_tolorance = 1e-2;
float64_t abs_tolorance;
Expand Down Expand Up @@ -288,10 +288,10 @@ TEST(LogitPiecewiseBoundLikelihood,get_variational_first_derivative_wrt_sigma2)
v[8] = 64;
v[9] = 625;

CLogitPiecewiseBoundLikelihood *lik = new CLogitPiecewiseBoundLikelihood();
lik->set_bound(bound);
CLogitVariationalPiecewiseBoundLikelihood *lik = new CLogitVariationalPiecewiseBoundLikelihood();
lik->set_variational_bound(bound);
CBinaryLabels* lab = new CBinaryLabels(y);
lik->set_distribution(m, v, lab);
lik->set_variational_distribution(m, v, lab);

TParameter* s2_param=lik->m_gradient_parameters->get_parameter("sigma2");

Expand Down Expand Up @@ -324,7 +324,7 @@ TEST(LogitPiecewiseBoundLikelihood,get_variational_first_derivative_wrt_sigma2)
SG_UNREF(lik);
}

TEST(LogitPiecewiseBoundLikelihood,get_variational_first_derivative_wrt_mu)
TEST(LogitVariationalPiecewiseBoundLikelihood,get_variational_first_derivative_wrt_mu)
{
float64_t rel_tolorance = 1e-2;
float64_t abs_tolorance;
Expand Down Expand Up @@ -369,10 +369,10 @@ TEST(LogitPiecewiseBoundLikelihood,get_variational_first_derivative_wrt_mu)
v[8] = 64;
v[9] = 625;

CLogitPiecewiseBoundLikelihood *lik = new CLogitPiecewiseBoundLikelihood();
lik->set_bound(bound);
CLogitVariationalPiecewiseBoundLikelihood *lik = new CLogitVariationalPiecewiseBoundLikelihood();
lik->set_variational_bound(bound);
CBinaryLabels* lab = new CBinaryLabels(y);
lik->set_distribution(m, v, lab);
lik->set_variational_distribution(m, v, lab);

TParameter* mu_param=lik->m_gradient_parameters->get_parameter("mu");

Expand Down

0 comments on commit bfabcfa

Please sign in to comment.