From d9022c8cee2b5fc34cf0ee6631e70aa1f59cfec1 Mon Sep 17 00:00:00 2001 From: James Hensman Date: Thu, 13 Nov 2014 11:18:25 +0000 Subject: [PATCH] stabilization of the Bernouolli --- GPy/likelihoods/bernoulli.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/GPy/likelihoods/bernoulli.py b/GPy/likelihoods/bernoulli.py index 817c0687..35015b2d 100644 --- a/GPy/likelihoods/bernoulli.py +++ b/GPy/likelihoods/bernoulli.py @@ -133,7 +133,7 @@ class Bernoulli(Likelihood): """ #objective = y*np.log(inv_link_f) + (1.-y)*np.log(inv_link_f) p = np.where(y==1, inv_link_f, 1.-inv_link_f) - return np.log(p) + return np.log(np.clip(p, 1e-6 ,np.inf)) def dlogpdf_dlink(self, inv_link_f, y, Y_metadata=None): """ @@ -152,7 +152,8 @@ class Bernoulli(Likelihood): """ #grad = (y/inv_link_f) - (1.-y)/(1-inv_link_f) #grad = np.where(y, 1./inv_link_f, -1./(1-inv_link_f)) - denom = np.where(y, inv_link_f, -(1-inv_link_f)) + ff = np.clip(inv_link_f, 1e-6, 1-1e-6) + denom = np.where(y, ff, -(1-ff)) return 1./denom def d2logpdf_dlink2(self, inv_link_f, y, Y_metadata=None):