Hey, stumbled upon your code while writing my Masters thesis (focusing on Poisson Factorization). First of all, kudos for the code, it was really helpful in figuring out the BNPPF model which is by no means trivial.
I think there might be a minor error at line 109 of "nonparametric.py": since you are working with $E[log \theta_{u, T+1}]$ I believe you should replace:
np.sum(np.log(1 - self._v[u,:self.T]))
with:
np.sum(np.log(1 - self._v[u,:(self.T+1)]))
as the product of the stick-breaking process occurs from 1 to (T+1)-1=T and not to T-1.
In practice, this however should have little effect on the convergence of variational parameters since it implies a small change in value in a small value (the infinite-sum).
Cheers!
Hey, stumbled upon your code while writing my Masters thesis (focusing on Poisson Factorization). First of all, kudos for the code, it was really helpful in figuring out the BNPPF model which is by no means trivial.
I think there might be a minor error at line 109 of "nonparametric.py": since you are working with$E[log \theta_{u, T+1}]$ I believe you should replace:
np.sum(np.log(1 - self._v[u,:self.T]))with:
np.sum(np.log(1 - self._v[u,:(self.T+1)]))as the product of the stick-breaking process occurs from 1 to (T+1)-1=T and not to T-1.
In practice, this however should have little effect on the convergence of variational parameters since it implies a small change in value in a small value (the infinite-sum).
Cheers!