Skip to content
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

Some questions about formula from the paper "Learning Bayesian Networks with Thousands of Variables". #10

Closed
AlbertYang1995 opened this issue Nov 15, 2018 · 9 comments

Comments

@AlbertYang1995
Copy link

Hi, I am trying to use the formula from the paper but I met some troubles.
I don't know whether I misunderstand it.

Here is the formula:
BIC(x, pa) = BIC*(x, pa1) + BIC*(x, pa2) + inter(x, pa1, pa2) + N * ( I (pa1;pa2| x ) - I (pa1;pa2) )
inter(x, pa1, pa2) = logN * ( |x| - 1 ) * ( |pa1| + |pa2| - |pa1| |pa2| - 1) - BIC( x )

I know pa1Upa2 = pa, so we can decompose BIC, and it's the most amazing part. But I am confused about |x|, |pa1| and |pa2|, do they mean the number of states as mentioned in the paper?

for example : x can be 0, 1, 2 (discrete data), so |x| = 3?

But I found that this formula didn't equal to original BIC score, because the |pa1| |pa2| will increase with parents number increase, eventually inter will become negative, and the score will far from the original one.

Did I do something wrong? Thank you very much.

@mauro-idsia
Copy link
Owner

mauro-idsia commented Nov 15, 2018 via email

@AlbertYang1995
Copy link
Author

Dear Mauro,

I find that | x | means the number of values of x, but |pa1| and |pa2| mean the number of parent nodes of subset.

Albert

@mauro-idsia
Copy link
Owner

mauro-idsia commented Nov 15, 2018 via email

@AlbertYang1995
Copy link
Author

At the very beginning I thought |pa| means the number of possible combination of values.

For example: pa have 3 variables(a, b, c), and each variable has 3 values(0, 1, 2), so the |pa| = 27

But when I coded and ran, the result wasn't right, so I came here ask for help.

During the time when I waited for reply, I guessed that the |pa| may be represent the number of parent nodes and I had a try. The result shows that these two BIC scores are the same.

Maybe I am wrong, but I really doubt the meaning of |pa|.

@mauro-idsia
Copy link
Owner

mauro-idsia commented Nov 15, 2018 via email

@AlbertYang1995
Copy link
Author

Dear Mauro,

You are totally right. Indeed the BIC* is an approximation of the BIC.

And I find that I didn't change the penalty of BIC*, so when I assumed that |pa| mean the number of parent nodes, those BIC scores turned out to be the same coincidently.

I am so sorry and thank you for your time.

Albert

@AlbertYang1995
Copy link
Author

Dear Mauro,

I have another question, we already know that BIC can be decomposed, but when the number of parent nodes increase, how to calculate conditional mutual information between two parents subsets?

For example:
Assuming that we have 30 parent nodes in all, then we can divide them into pa1 and pa2 these two subsets, pa1 have 10 variables and pa2 have 20 variables, after that pa2 can be divided into another two subsets again, so we can calculate BIC*. But each time we decompose parents subset, we have to calculate conditional mutual information and mutual entropy between pa1 and pa2 ( I (pa1;pa2 | x) and I (pa1;pa2) ).

There are too many combinations, how to calculate the mutual information between these two huge subsets?

Thank you very much.

Albert

@mauro-idsia
Copy link
Owner

mauro-idsia commented Nov 19, 2018 via email

@AlbertYang1995
Copy link
Author

Dear Mauro,

Thank you so much.
I am ready to close this issue.

Albert

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants