-
Notifications
You must be signed in to change notification settings - Fork 27
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
Masking Models #95
Masking Models #95
Conversation
…sianProcess model.
I think the functionality is useful for some applications. But the interpretability of the model is somehow changed. An orthogonal basis will most probably no longer be orthogonal if we just "mask" the model. Could this be problematic for some of the model operations? If yes, can we find a way to communicate this to our software users? Having not thought through all implications of this model transformation I find it dangerous to provide this in our core library. But maybe my concerns can be disproven. |
Yes orthogonality is lost: def orthognality[A](gp: PancakeDLRGP[_3D, UnstructuredPointsDomain[_3D], A]) = {
def getCol(c: Int) = gp.basisMatrix(::, c)
getCol(0).dot(getCol(1))
}
println(orthognality(model.neutralModel.shape))
println(orthognality(maskedMoMo.neutralModel.shape)) Output:
Do you think that orthogonality is a necessary requirement for the MoMo or is it only required for the DiscreteLowRankGaussianProcess? |
We should check the interface of momo if any function assumes orthogonality. For example, is |
For masking the shape, the same functionality exists in Scalismo by using the marginal method of DLRGP. |
@Ghazi-Bouabene thanks! This makes the whole thing much simpler. I updated the PR accordingly. Will the orthogonality issue be solved by using the marginal? |
Integrated marginal into MoMo. |
Compute the marginal of a MoMo on a set of points.
How to create a masked model:
Snippet: