The dual nature of a Bayesian network makes learning a Bayesian network as a two stage process a natural division: first learn a network structure, then learn the probability tables.
There are various approaches to structure learning and in Weka, the following areas are distinguished:
Cross-validation differs from local scoring metrics in that the quality of a network structure often cannot be decomposed in the scores of the individual nodes. So, the whole network needs to be considered in order to determine the score.
For each of these areas, different search algorithms are implemented in Weka, such as hill climbing, simulated annealing and tabu search.
Once a good network structure is identified, the conditional probability tables for each of the variables can be estimated.
You can select a Bayes net classifier by clicking the classifier 'Choose' button in the Weka explorer, experimenter or knowledge flow and find BayesNet under the weka.classifiers.bayes package (see below).
The Bayes net classifier has the following options:
The BIFFile option can be used to specify a Bayes network stored in file in BIF format. When the toString() method is called after learning the Bayes network, extra statistics (like extra and missing arcs) are printed comparing the network learned with the one on file.
The searchAlgorithm option can be used to select a structure learning algorithm and specify its options.
The estimator option can be used to select the method for estimating the conditional probability distributions (Section 6).
When setting the useADTree option to true, counts are calculated using the ADTree algorithm of Moore [10]. Since I have not noticed a lot of improvement for small data sets, it is set off by default. Note that this ADTree algorithm is different from the ADTree classifier algorithm from weka.classifiers.tree.ADTree.
The debug option has no effect.