From c598dca830747406b974e0027c624f5503049f50 Mon Sep 17 00:00:00 2001 From: Ricardo Date: Tue, 4 Jun 2013 17:23:46 +0100 Subject: [PATCH 1/3] match_moments function passes transformed values --- GPy/likelihoods/EP.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/GPy/likelihoods/EP.py b/GPy/likelihoods/EP.py index 5b538b92..9f410bc1 100644 --- a/GPy/likelihoods/EP.py +++ b/GPy/likelihoods/EP.py @@ -110,7 +110,7 @@ class EP(likelihood): self.tau_[i] = 1./Sigma[i,i] - self.eta*self.tau_tilde[i] self.v_[i] = mu[i]/Sigma[i,i] - self.eta*self.v_tilde[i] #Marginal moments - self.Z_hat[i], mu_hat[i], sigma2_hat[i] = self.likelihood_function.moments_match(self.data[i],self.tau_[i],self.v_[i]) + self.Z_hat[i], mu_hat[i], sigma2_hat[i] = self.likelihood_function.moments_match(self._transf_data[i],self.tau_[i],self.v_[i]) #Site parameters update Delta_tau = self.delta/self.eta*(1./sigma2_hat[i] - 1./Sigma[i,i]) Delta_v = self.delta/self.eta*(mu_hat[i]/sigma2_hat[i] - mu[i]/Sigma[i,i]) @@ -200,7 +200,7 @@ class EP(likelihood): self.tau_[i] = 1./Sigma_diag[i] - self.eta*self.tau_tilde[i] self.v_[i] = mu[i]/Sigma_diag[i] - self.eta*self.v_tilde[i] #Marginal moments - self.Z_hat[i], mu_hat[i], sigma2_hat[i] = self.likelihood_function.moments_match(self.data[i],self.tau_[i],self.v_[i]) + self.Z_hat[i], mu_hat[i], sigma2_hat[i] = self.likelihood_function.moments_match(self._transf_data[i],self.tau_[i],self.v_[i]) #Site parameters update Delta_tau = self.delta/self.eta*(1./sigma2_hat[i] - 1./Sigma_diag[i]) Delta_v = self.delta/self.eta*(mu_hat[i]/sigma2_hat[i] - mu[i]/Sigma_diag[i]) @@ -295,7 +295,7 @@ class EP(likelihood): self.tau_[i] = 1./Sigma_diag[i] - self.eta*self.tau_tilde[i] self.v_[i] = mu[i]/Sigma_diag[i] - self.eta*self.v_tilde[i] #Marginal moments - self.Z_hat[i], mu_hat[i], sigma2_hat[i] = self.likelihood_function.moments_match(self.data[i],self.tau_[i],self.v_[i]) + self.Z_hat[i], mu_hat[i], sigma2_hat[i] = self.likelihood_function.moments_match(self._transf_data[i],self.tau_[i],self.v_[i]) #Site parameters update Delta_tau = self.delta/self.eta*(1./sigma2_hat[i] - 1./Sigma_diag[i]) Delta_v = self.delta/self.eta*(mu_hat[i]/sigma2_hat[i] - mu[i]/Sigma_diag[i]) From 7396e5ad214822917289c62f0a3a06ef13d5f95f Mon Sep 17 00:00:00 2001 From: Ricardo Date: Tue, 4 Jun 2013 17:39:38 +0100 Subject: [PATCH 2/3] unit_tests corrected --- GPy/likelihoods/link_functions.py | 8 +++++--- GPy/testing/unit_tests.py | 6 +++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/GPy/likelihoods/link_functions.py b/GPy/likelihoods/link_functions.py index 28beac71..f3b48d21 100644 --- a/GPy/likelihoods/link_functions.py +++ b/GPy/likelihoods/link_functions.py @@ -19,8 +19,6 @@ class link_function(object): def __init__(self): pass - - class identity(link_function): def transf(self,mu): return mu @@ -53,6 +51,10 @@ class log_ex_1(link_function): return np.log(np.log(np.exp(f)+1)) class probit(link_function): - pass + def inv_transf(self,f): + return std_norm_cdf(f) + + def log_inv_transf(self,f): + return np.log(std_norm_cdf(f)) diff --git a/GPy/testing/unit_tests.py b/GPy/testing/unit_tests.py index 4bdbdca8..9f8eb000 100644 --- a/GPy/testing/unit_tests.py +++ b/GPy/testing/unit_tests.py @@ -169,7 +169,7 @@ class GradientTests(unittest.TestCase): X = np.hstack([np.random.normal(5,2,N/2),np.random.normal(10,2,N/2)])[:,None] Y = np.hstack([np.ones(N/2),np.zeros(N/2)])[:,None] kernel = GPy.kern.rbf(1) - distribution = GPy.likelihoods.likelihood_functions.probit() + distribution = GPy.likelihoods.likelihood_functions.binomial() likelihood = GPy.likelihoods.EP(Y, distribution) m = GPy.core.GP(X, likelihood, kernel) m.ensure_default_constraints() @@ -183,7 +183,7 @@ class GradientTests(unittest.TestCase): Y = np.hstack([np.ones(N/2),np.zeros(N/2)])[:,None] Z = np.linspace(0,15,4)[:,None] kernel = GPy.kern.rbf(1) - distribution = GPy.likelihoods.likelihood_functions.probit() + distribution = GPy.likelihoods.likelihood_functions.binomial() likelihood = GPy.likelihoods.EP(Y, distribution) m = GPy.core.sparse_GP(X, likelihood, kernel,Z) m.ensure_default_constraints() @@ -196,7 +196,7 @@ class GradientTests(unittest.TestCase): X = np.hstack([np.random.rand(N/2)+1,np.random.rand(N/2)-1])[:,None] k = GPy.kern.rbf(1) + GPy.kern.white(1) Y = np.hstack([np.ones(N/2),-np.ones(N/2)])[:,None] - likelihood = GPy.inference.likelihoods.probit(Y) + likelihood = GPy.inference.likelihoods.binomial(Y) m = GPy.models.generalized_FITC(X,likelihood,k,inducing=4) m.constrain_positive('(var|len)') m.approximate_likelihood() From 2e6bbbf12b659b3642aed9ac7c0f3aeba67898ca Mon Sep 17 00:00:00 2001 From: Ricardo Date: Tue, 4 Jun 2013 17:41:03 +0100 Subject: [PATCH 3/3] FITC test not skipped any more --- GPy/testing/unit_tests.py | 1 - 1 file changed, 1 deletion(-) diff --git a/GPy/testing/unit_tests.py b/GPy/testing/unit_tests.py index 9f8eb000..b2c8196b 100644 --- a/GPy/testing/unit_tests.py +++ b/GPy/testing/unit_tests.py @@ -190,7 +190,6 @@ class GradientTests(unittest.TestCase): m.update_likelihood_approximation() self.assertTrue(m.checkgrad()) - @unittest.skip("FITC will be broken for a while") def test_generalized_FITC(self): N = 20 X = np.hstack([np.random.rand(N/2)+1,np.random.rand(N/2)-1])[:,None]