HELP!

Fuzzy Logic

Fuzzy Logic is an AI method, supported by the Viabl.ai Platform, for dealing with a special type of uncertainty in human decision making processes. Fuzzy Logic reasoning can be used for modelling and applying human knowledge that deals with "vagueness" or "degrees of truth", where the boundaries between decisions are said to be "fuzzy". For example an Attribute "Climate" with List values "Hot", "Warm" and "Cold". This differs from classical probabilistic reasoning, which is based on the frequency of the occurrences of discrete states, rather than the degrees of truth of membership to a set.

Fuzzy Logic Rules have been applied using the Viabl.ai Platform to increase the effectiveness and accuracy of, amongst others, Risk / Fitness Assessment applications. Another Fuzzy Logic option is available in the Viabl.ai Platform which provides fuzzy inference for Decision Trees generated using Data Mining.

In standard rules logic, the expert must define sharp boundaries for such Attribute values (e.g. Cold is < 20.0, Warm is 20.0 to 30.0 & Hot is > 30.0). The rules inference engine will use a value for the numeric Temperature question to derive one of those 3 Climate list values and using it to follow a single path through the rules inference. The drawback with this approach is most noticeable when the value for Temperature falls near one of the boundaries. (e.g. Temperature is 19.9). In such a scenario, human expertise tend to consider the "big picture" when making decisions. Attempting to lessen the impact of the discrepancy between standard rules modelling and the human expertise can often lead to an increase in the number of Attribute values (e.g. by adding a value of "Mild") and thus resulting in the adoption of larger than necessary rule sets without addressing the underlying issue (namely the discrepancy between the human expertise and the machine's representation of it).

Using Fuzzy Logic

1. Fuzzifying a List Question

To use fuzzy inference requires one or more existing List Questions to be converted into Fuzzy List Questions, this is achieved from the Decision Map view. Right-click on a List Question in the Decision Map view and select the 'Fuzzify a List Question' option from the burger menu.


This will lead to a series of screens to guide the developer through the fuzzification process for that question. The first screen prompts for a Numeric Question, this can be an existing object or one created at this point. This is an optional step but is worth doing as it simplifies the process of setting the fuzzy value of the Fuzzified List Question.


The developer must specify the min/max range of the numeric values that will feed into the Fuzzified List Question


This tool will define the Fuzzy Membership Function for each of the values of the List Question, and determines how a given numeric value is mapped to a Membership Value for each List value. It defaults to a uniform distribution of the numeric range amongst all the List values, which the developer can change to reflect the real ranges.


The Fuzzy Membership Functions for the above screen with the values 'Low', 'Medium', 'High' are reflected in the diagram below, notice the Fuzzy Factor % is the percentage of the overall range applied to the cross-over section.


The optional Numeric Object automatically generates code in the OnCapture Event of the fuzzified List Object, for example...

#Supplier_Chain_Rating.run();
self.prop("fuzzyvalue", #Supplier_Chain_Rating.val());

If the optional Numeric Object is not specified then the developer must assign the fuzzyvalue property of the List Object to the required numeric value before the Fuzzified List Question is encountered in inference, for example...

#Supplier_Chain_Risk.prop("fuzzyvalue",#Another_Numeric.val());

2. Utilising the results of Fuzzy inference

If a Fuzzyfied List Question is included in a Decision Tree then fuzzy inference is automatically applied to that Decision Tree. Whilst standard Decision Tree inference follows a single path towards a Leaf node, fuzzy Tree inference follows multiple branches towards multiple Leaf nodes (where the Membership Value of a Question List value is greater than zero). Each Decision Tree outcome value then gets an associated Membership Values which can be read from the fuzzyMV value property, for example...

var targetTree = #Product_Services_Risk;
for (var c = 0; c < targetTree.aValues.length; c++) {
    xpertrule.message(targetTree.value(c + 1).fuzzyMv);
}

Also, to get the MV of the defuzzified Tree...

var targetTree = #Product_Services_Risk;
xpertrule.message(targetTree.prop("fuzzyvalue"));

A single-select Decision Tree, is automatically assigned the value with the highest Membership Value. A multi-select Decision Tree is automatically assigned the values with a Membership Values > 0

On This Page