GaussianMixtureModel likelihood calcualtion

35 views
Skip to first unread message

Gerti

unread,
Apr 3, 2014, 4:16:03 PM4/3/14
to accor...@googlegroups.com
Hello,

In the GaussianMixtureModel class, Classify() outputs responses as likelihoods to each clusters. While I'm tempted to take the likelihood literally in the linear scale, I want to make sure that responses are not in log scale. Can someone confirm or reject this ? Background: I traced the source code to GaussianCluster and GaussianClusterCollection type, but the GaussianCluster returns the loglikelihood, while GaussianClusterCollection returns likelihood, and the documentation (as well as the comments) mention likelihood, which is contradictory. Any help is appreciated.

César

unread,
Apr 4, 2014, 3:35:45 PM4/4/14
to accor...@googlegroups.com
Hi Gerti!

In the current release, Classify outputs, indeed, likelihoods. GaussianCluster outputs log-likelihoods through its LogLikelihood method, but it could as well have had another Likelihood method to return just likelihoods. I am going to add this new method just in case someone might need it.

Now, about GaussianClusterCollection: If you call Nearest(double[] point, out double[] responses), then this class will return you the likelihood response for each cluster in the responses variable. If you Nearest(double[] point, out double response), then it will return a probability (i.e. ranging from 0 to 1) representing the ratio of the highest likelihood in relation to the sum of all possible likelihoods.

In fact, the GaussianMixtureModel class is just a wrapper around the more general MultivariateMixture<MultivariateNormalDistribution> type. The computations in GaussianMixtureModel don't depend upon calling GaussianCluster or GaussianClusterCollection, so that might explain a bit why it seemed a bit contradictory. But I will try to make this more clear in the documentation!

Hope this makes it a bit more clear! If you need any help, please let me know!

Best regards,
Cesar

Gerti

unread,
Apr 7, 2014, 9:31:08 PM4/7/14
to accor...@googlegroups.com
Hi Cesar,

Thank you for the response. I was actually trying to use GaussianMixture with the usability of  MultivariateMixture<MultivariateNormalDistribution>, i.e. a mix of Gaussians and I wanted the actual likelihood given an observation. The application is calling for maximizing likelihood among a group of Gaussian mixtures. So I wanted the likelihood from each mixture, where each mixture would be a separate GaussianMixtureModel. I don't think that there is a method, in GaussianMixtureMode which simply returnes the likelihood given a single (or an array of) observation(s). It seems that  MultivariateMixture<MultivariateNormalDistribution> would do what I'm looking for.

At any rate, thank you again for the clear response.

Gerti
Reply all
Reply to author
Forward
0 new messages