bayesnet / bnt

Bayes Net Toolbox for Matlab
460 stars 247 forks source link

learn_params_em() for empty node #45

Closed shihui2010 closed 8 years ago

shihui2010 commented 8 years ago

Hi, I'm trying to estimate parameter for a Bayesian Network by function learn_params_em(). The variables in the network are either partially observed, or purely have no observation at all. I found the brief documentation of this function in the link below: http://bnt.googlecode.com/svn/trunk/docs/usage.html

I see it says learn_params_em() is for conditions "when some values are not observed". My question is when "all values are not observed", will this function return meaningful results?

Thanks,

Ionhihir commented 8 years ago

Dear Shihui,

You're right, no need to keep empty samples. As well as strongly unobserved entries, more than 66% missing attributes.

But when the missing rate is low (below 30%) the results is smotther than with only fully observed entries, with is a good thing.

Olivier FRANÇOIS 01 81 66 87 23 COSYS / GRETTIA

De: "shihui2010" notifications@github.com À: "bayesnet/bnt" bnt@noreply.github.com Envoyé: Samedi 30 Avril 2016 21:45:28 Objet: [bayesnet/bnt] learn_params_em() for empty node (#45)

Hi, I'm trying to estimate parameter for a Bayesian Network by function learn_params_em(). The variables in the network are either partially observed, or purely have no observation at all. I found the brief documentation of this function in the link below: http://bnt.googlecode.com/svn/trunk/docs/usage.html

I see it says learn_params_em() is for conditions "when some values are not observed". My question is when "all values are not observed", will this function return meaningful results?

Thanks,

— You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub

shihui2010 commented 8 years ago

Thank you so much for reply. I see even I feed the function with variables that have no observation, it can still estimate a distribution of the variables. Just out of curiosity, is such distribution reliable? And if so, how can I interpret the estimation.

Ionhihir commented 8 years ago

Hi,

as I said :"You're right, no need to keep empty samples."

Nethertheless if you add empty sample it does't change de results as if there was not there. Just have a look at a simple EM algorithm run to understand it.

Regards.

Olivier FRANÇOIS 01 81 66 87 23 COSYS / GRETTIA

De: "shihui2010" notifications@github.com À: "bayesnet/bnt" bnt@noreply.github.com Cc: "Olivier Francois" olivier.francois@ifsttar.fr, "Comment" comment@noreply.github.com Envoyé: Lundi 2 Mai 2016 23:06:18 Objet: Re: [bayesnet/bnt] learn_params_em() for empty node (#45)

Thank you so much for reply. I see even I feed the function with variables that have no observation, it can still estimate a distribution of the variables. Just out of curiosity, is such distribution reliable? And if so, how can I interpret the estimation.

— You are receiving this because you commented. Reply to this email directly or view it on GitHub

shihui2010 commented 8 years ago

Hi,

I strongly agree that "adding empty samples doesn't change the results as they are not present".

However, just to make my question clearer. If I add an empty node into network, the function I'm asking will output a distribution of this empty node. Specifically, I want to know if the distribution of this empty node is reliable or not.

Thanks,

Ionhihir commented 8 years ago

Hi,

Of course, this method is usually named adding a latent variable. The difficulties is to find the good size of this variable. Main response to this is to use an information criterion (as BIC).

Then when performing learning with EM, you will get a very pertinent node which is usually used in architecture as

Olivier FRANÇOIS 01 81 66 87 23 COSYS / GRETTIA

De: "shihui2010" notifications@github.com À: "bayesnet/bnt" bnt@noreply.github.com Cc: "Olivier Francois" olivier.francois@ifsttar.fr, "Comment" comment@noreply.github.com Envoyé: Mardi 3 Mai 2016 19:06:33 Objet: Re: [bayesnet/bnt] learn_params_em() for empty node (#45)

Hi,

I strongly agree that "adding empty samples doesn't change the results as they are not present".

However, just to make my question clearer. If I add an empty node into network, the function I'm asking will output a distribution of this empty node. Specifically, I want to know if the distribution of this empty node is reliable or not.

Thanks,

— You are receiving this because you commented. Reply to this email directly or view it on GitHub

shihui2010 commented 8 years ago

Okay, I got your point. Thank you so much for clarifying. It's quite helpful.