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

[QUESTION] Implementing a Dynamic Bayesian Network #1125

Open
at-ray-o opened this issue Jan 10, 2025 · 2 comments
Open

[QUESTION] Implementing a Dynamic Bayesian Network #1125

at-ray-o opened this issue Jan 10, 2025 · 2 comments

Comments

@at-ray-o
Copy link

Hi Jacob,

My name is Atreya. Firstly I want to thank you for building this module. Its been a pleasure learning about its capabilities.

Now, I am trying to use Pomegranate to try to implement a Dynamic Bayesian Network. My system will be a DBN approximation to an ODE. So there are 100+ time points and about 10+ parameters that need to be fitted. I was wondering if you think its possible to write a DBN using Pomegranate and if so how might one go about doing that? From my understanding of the tutorial I should probably be using the BayesianNetwork architecture, but I am unsure how to add a time-component to that.

Once again, thank you so much for building pomegranate and I apologize for taking your time. I look forward to hearing from you.

Best
Atreya

@jmschrei
Copy link
Owner

Hi Atreya

The simple answer is that, conceptually, you should be able to wrap BayesianNetwork to create a DynamicBayesianNetwork. However, before I could work out how DBNs worked or how to efficiently engineer them I had to move on to other topics and never had a chance to revisit them.

That being said, my understanding is that DBNs have to be unrolled along a time axis and that, after unrolling, they are literally a Bayesian network. If there are a fixed number of time points you could just implement the unrolled DBN. But.. if there are a variable number of time points, you'll run into challenges.

Sorry for the inconvenience! If you can figure it out I'd love to know.

@at-ray-o
Copy link
Author

Hi Jacob,

Thank you so much for your prompt response. I can certainly try implementing a DBN as a time-unrolled Bayesian Network, however I still have two questions.

  1. My data that I will be using to fit is only present at certain time points, not every time point of the DBN. Is there anyway to tell Pomegranate which time points to use calculate the loss?

  2. Some of the variables that flow from one time-point to the next time-point are not random. They are mathematically defined by an equation. Is there any way to ensure that? Or is there something like a delta distribution among the distributions?

Once again, thanks a lot for the response.

Best
Atreya

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

3 participants
@jmschrei @at-ray-o and others