Getting a feel for probabilistic reasoning. Using Bayes networks for diagnostic reasoning.
Your program should be able to read a Bayes network specified as a file,
and then allow the user to preform one of the following, repeatedly:
The inference algorithm for computing the posterior distribution is your choice: enumeration, sampling, or any other algorithm studied in class.
The type of network your program should be able to support is defined below. You will define and reason on a network for medical diagnosis. In the system, there are four types of variables:
Pathogens depend on background data - e.g. people of a certain heredity have a tendency for increased deposits in arteries. Pathology is caused by the pathogens - e.g. angina pectoris may result from blocked arteries. The symptoms are modeled by noisy-or nodes, each potentially caused by one or more diseases. You are to create a Bayes network modeling at least 2 primal causes, 2 pathogens,4 diseases, and 4 symptoms. Explain the choices made in your design (especially the network topology). Make up probabilities such that you will be able to demonstrate all behaviours required below.
Now that your model is ready, write it in the requisite format as a text file (manually using a text editor, or in any other way). Now, perform reasoning on the network using your program. Establish values for primal cause nodes and some symptoms, and perform observations - i.e. find the probability of all diseases given the evidence, and state the most likely disease.
Perform the resoning over at least 2 different patients of different background. For each patient, compute the probability of all diseases given:
Show in the data (by using at least 1 pair of different evidence sets each), behaviours of the following types:
You need to turn in:
Deadline: January 13, 2012.
Format of the file specifying the Bayes network is your choice. Suggest the following format (characters following ; on a line are comments):
Nodes n ; How many nodes/random variable NODE node_name1 normal (parents_list) ; Define a node called node_name1 of type normal LABELS value1 value2 ... ; Define values possible for the node DISTRIBUTION distribution_table ; Distribution table given as a complete array NODE node_name2 noisyOR (parents_list) ; Define another node called node_name2 of type noisy-or DISTRIBUTION list_of_causal_weights ; Weights defining the conditional distribution
Note that for a noisy or we can assume that the values are TRUE/FALSE and that the parents are also TRUE/FALSE.