void ReviseCPTsByFindings_bn ( const nodelist_bn*  nodes,   int  updating,   double  degree )

The current case (i.e., findings entered) is used to revise each node's conditional probabilities. This is different from belief updating, which finds the beliefs for nodes (i.e., posterior probabilities), given conditional probability relations between them and the findings that have been entered. Instead, revising the probabilities changes the conditional probability tables (CPTs) between the nodes to account for the current case.

The first few times this is called for a node, the probabilities will change considerably, because the node has little experience, but after many cases have been entered, each new case will result in only a small change.

All the nodes of nodes must be in the same net.

Pass 0 for updating. It is only for future expansion.

degree indicates how the case should be weighted. The normal value for degree is 1. If a positive integer n is passed, it will have the same effect as calling this function n times to tally up n identical cases. If degree is 0, the call will have no effect. If the case is learned by calling with degree = 1, it can later be "unlearned" by calling with degree = -1.

In general, if it is called with degree = d at one point in time, and then with the same case and degree = c at another time, the overall effect will be the same as a single call with degree = d + c, even if there were many intervening calls with other cases and other degrees, and even if d or c or both are negative. If a call to FadeCPTable_bn was made in between, then d will be weighted by the degree passed to FadeCPTable_bn.

The order in which cases are presented has no effect.

If a node already has CPT and experience tables, this function uses the experience table to provide a "confidence" for each of the probabilities in the CPT table. The higher the experience of a probability, the less it will be altered. It is okay if a node starts with no CPT or experience tables, since then Netica will start it off with a uniform distribution having the minimum experience. However, when calling this function, a node cannot have a CPT table and no experience table, since then Netica will not know what confidence to assign the existing probabilities of the CPT table, and an error will be generated.

NOTE: If there are nodes without CPTs in nodes for which there are no findings (or there is no information on one of their parents), they will not be modified, so no CPT table will be built, so a later call to GetNodeProbs_bn could return NULL unexpectedly.


In versions previous to 2.10, this function was named CaseRevisesProbs_bn.

See also:

ReviseCPTsByCaseFile_bn    Batch version, more efficient than one at a time
FadeCPTable_bn    Use between calls to ReviseCPTsByFindings_bn when the world is changing during learning
NewNodeList2_bn    Create the node list