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): http://www.cs.umsl.edu/~pelikan/software.html
The primary source is: "Linkage Problem, Distribution Estimation, and Bayesian Networks" (1998) ftp://ftp-illigal.ge.uiuc.edu/pub/papers/IlliGALs/98013.ps.Z
asked Dec 11 '10 at 14:29
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 Passos ♦