The Bayesian Optimization Algorithm (BOA) constructs a Bayesian network from a population of candidate solutions. Variation operations are performed to the network itself which is scored and accepted if the score improves.

How do you implement the scoring function (pseudo code or any programming language)?



Papers mention the Bayesian Dirichlet Metric (BD) or the Bayesian Information Criterion (BIC) but it is not clear how to realize them in code.

There is sample c++ code which talks about "gains", which is less than readable (to me):

The primary source is: "Linkage Problem, Distribution Estimation, and Bayesian Networks" (1998)

asked Dec 11 '10 at 14:29

Jason%20Brownlee's gravatar image

Jason Brownlee

One Answer:

This seems to be an instance of particle filtering, also known as sequential monte carlo. There was a tutorial on this topic in NIPS 2009 that might be informative.

Essentially, you need to have a model (or model family) to use these techniques, and such models define a likelihood function and (assuming the "Bayesian" in the name is not there for show) a prior distribution function. Then you can score each such network as log-likelihood + log-prior, and there are many ways to do the selection and resampling, depending on the properties of your model or how much computational time you can afford to use. I suggest you start from the more general particle filtering techniques and then see how to express this particular model in that framework, specially as it's usually easy to develop particle filters for simple enough models.

answered Dec 11 '10 at 21:30

Alexandre%20Passos's gravatar image

Alexandre Passos ♦

Your answer
toggle preview

powered by OSQA

User submitted content is under Creative Commons: Attribution - Share Alike; Other things copyright (C) 2010, MetaOptimize LLC.