How to Deal with Uncertainty in Rules - Documents - Corticon - Progress Community

How to Deal with Uncertainty in Rules

Suppose I tell you I have a yellow object and ask you to identify it.
It could be (among many other things)
1. A banana
2. A lemon
3. A submarine (if you are old enough to remember the Beatles)
But it’s considerably less likely that it’s a submarine
But if also tell you it’s long then it’s less likely to be a lemon.
And if I say that it’s small, this adds more weight to it being a banana
But at no point can we conclusively say what it is.
So how can we model rules that deal with this uncertainty?

The basic idea is to maintain separate measures of certainty for EACH of the attributes of the object and then combine those certainty measures to arrive at an overall certainty measure for ALL of the attributes.

The rules for combining certainty factors (CFa and CFb) are as follows:

Rule 1 The rule for adding two positive certainty factors:

Reduce the influence of the second certainty factor by the remaining uncertainty of the first, and add the result to the certainty of the first

CFcombine (CFa CFb) = CFa + CFb(1 - Cfa)

Rule 2 The rule for adding two negative certainties :

Treat the two factors as positive then negate the result

CFcombine (CFa CFb) = -(CFcombine (-CFa -CFb))

Rule 3 The rule for adding positive and negative certainty factors :

CFcombine (CFa CFb) = (CFa + CFb) / (1 - min{|CFa|, |CFb|})

The attached document presents a generic framework in Corticon that can be used to achieve this.

Also take a look at the "Viral Hemorrhagic Fever" rule model for different approach that involves simple counting of the number of symptoms that are applicable to a give diagnosis. This uncertainty approach could also be used there.

  • How to Deal with Uncertainty in Rules

    I don't understand how the TEMP entity in the rule scope can have two attributes called "whatMightItBe" as shown in the "Implementation" screenshot. Can you explain?

  • How to Deal with Uncertainty in Rules

    Hmm, That should not occur. I think it’s a bug.

    I found I could paste any number of copies.

    I don’t think it affects execution but it does look odd.