-
Notifications
You must be signed in to change notification settings - Fork 229
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Ordinal factor analysis model #36
Comments
The issue is that you are using Variable.IsBetween on data where the output is sometimes false. This leads to a weird constraint that requires vYY to not be between two bounds. Do you actually need this for ordinal regression? I would think that each observation in ordinal regression asserts that vYY is between two bounds. |
By the way, the matchbox recommendation model is similar to ordinal factor analysis. |
Ah, of course, that makes perfect sense. That was a simple enough fix. I'd like to constrain the weights vectors to be unit length, but it seems that the two more obvious methods for doing so (specifically, taking the inner product with itself or sum of squares and constraining it to be unit 1) don't work. Is this possible under VMP or EP? |
Thanks much for the prompt reply, by the way. I'll take a look at the matchbox recommendation model. |
P.S. One more question - is there a straightforward way to constrain an array to be ordered (i.e. for learning the thresholds)? It seems like there should be a way to string together |
It is theoretically possible to have a unit length constraint in VMP or EP. A vector of unit length is equivalent to a point on a hyper-sphere, so the posterior would be a distribution over the hyper-sphere, and various approximate distributions could be used. However, they are not yet implemented in Infer.NET. You can indeed string together ConstrainPositive calls to constrain an array to be ordered, but you don't need to do this for ordinal regression, since the IsBetween constraints already do it. See the matchbox model. Since your original question was answered, I'm closing this issue. |
I'm hoping to implement a (probit) ordinal factor analysis model in Infer.NET. There were a few references on the old help board (from almost 10 years ago - see here) to the problem that were helpful. This is my model so far:
The part that seems to be giving the inference engine trouble is the
Variable.IsBetween
. It errors with:TruncatedGaussian requires isBetween=true
. I have a hunch this might be a limitation of the VMP implementation (to do with non-conjugacy at theIsBetween
node?) - I had hoped to use EP to fit the model, but theMatrixMultiply
factor doesn't seem to be supported. Any pointers would be much appreciated! And sorry if any of this is basic, I'm very new to both Infer.NET and .NET in general. Thanks for a great piece of software.The text was updated successfully, but these errors were encountered: