Chapter 89. Credit card fraud dispute use case
The financial industry uses pragmatic AI for decisioning in several areas. One area is credit card charge disputes. When a customer identifies an incorrect or unrecognized charge on a credit card bill, the customer can dispute the charge. Human intervention in credit card fraud detection is required in some cases but the majority of reported credit card fraud can be completely or partially resolved with pragmatic AI.
Machine learning models such as Tensorflow™ and R™ produce predictive models. You can save these predictive models in an open standard such as PMML so that you can use the model with Red Hat Decision Manager or other products that support the PMML standard.
89.1. Using a PMML model with a DMN model to resolve credit card transaction disputes
This example shows you how to use Red Hat Decision Manager to create a DMN model that uses a PMML model to resolve credit card transaction disputes. When a customer disputes a credit card transaction, the system decides whether or not to process the transaction automatically.
Prerequisites
Red Hat Decision Manager is available and the following JAR file has been added to the
~/kie-server.war/WEB-INF/lib
and~/business-central.war/WEB-INF/lib
directories in your Red Hat Decision Manager installation:kie-dmn-jpmml-7.44.0.Final-redhat-00003.jar
This file is available in the Red Hat Decision Manager 7.9 Maven Repository distribution available from the Software Downloads page in the Red Hat Customer Portal (login required). The group ID, artifact ID, and version (GAV) identifier of this file is
org.kie:kie-dmn-jpmml:7.44.0.Final-redhat-00003
. For more information, see the "Including PMML models within a DMN file in Business Central" section of Designing a decision service using DMN models.- JPMML Evaluator 1.5.1 JAR file
JPMML Evaluator Extensions 1.5.1 JAR file
These files are required to enable JPMML evaluation in KIE Server and Business Central.
ImportantRed Hat supports integration with the Java Evaluator API for PMML (JPMML) for PMML execution in Red Hat Decision Manager. However, Red Hat does not support the JPMML libraries directly. If you include JPMML libraries in your Red Hat Decision Manager distribution, see the Openscoring.io licensing terms for JPMML.
Procedure
-
Create the
dtree_risk_predictor.pmml
file with the contents of the XML example in Section 89.2, “Credit card transaction dispute exercise PMML file”. In Business Central, create the Credit Card Dispute project:
- Navigate to Menu → Design → Projects.
- Click Add Project.
-
In the Name box, enter
Credit Card Dispute
and click Add.
In the Assets window of the Credit Card Dispute project, import the
dtree_risk_predictor.pmml
file into thecom
package:- Click Import Asset.
In the Create new Import Asset dialog, enter
dtree_risk_predictor
in the Name box, select com from the Package menu, select thedtree_risk_predictor.pmml
file, and click OK.The content of the
dtree_risk_predictor.pmml
file appears in the Overview window.
Create the Dispute Transaction Check DMN model in com package:
- To return to the project window, click Credit Card Dispute in the breadcrumb trail.
- Click Add Asset.
- Click DMN in the asset library.
In the Create new DMN dialog, enter enter
Dispute Transaction Check
in the Name box, select com from the Package menu, and click OK.The DMN editor opens with the Dispute Transaction Check DMN model.
Create the tTransaction custom data type:
- Click the Data Types tab.
- Click Add a custom Data Type.
-
In the Name box, enter
tTransaction
. - Select Structure from the Type menu.
To create the data type, click the check mark.
The tTransaction custom data type appears with one variable row.
-
In the Name field of the variable row, enter
transaction_amount
, select Number from the Type menu, and then click the check mark. -
To add a new variable row, click the plus symbol on the
transaction_amount
row. A new row appears. -
In the Name field, enter
cardholder_identifier
, select Number from the Type menu, and then click the check mark.
Add the Risk Predictor
dtree_risk_predictor.pmml
model:- In the Included Models window of the DMN editor, click Include Model.
-
In the Include Model dialog, select
dtree_risk_predictor.pmml
from the Models menu. -
Enter
Risk Predictor
in the Provide a unique name box and click OK.
Create the Risk Predictor Business Knowledge Model (BKM) node with the Risk Predictor and DecisionTreeClassifier model:
In the Model window of the DMN editor, drag a BKM node to the DMN editor palette.
- Rename the node Risk Predictor.
Click the edit icon located below the trash can icon on the left side of the node.
- Click F in the Risk Predictor box and select PMML from the Select Function Kind menu. The F changes to P.
- Double-click the First select PMML document box and select Risk Predictor.
- Double-click the Second select PMML model box and select DecisionTreeClassifier.
- To return to the DMN editor palette, click Back to Dispute Transaction Check.
Create the Transaction input data node with the data type tTransaction:
In the Model window of the DMN editor, drag an input data node to the DMN editor palette.
- Rename the node Transaction.
- Select the node then click the properties pencil icon in the upper-right corner of the window.
- In the Properties panel, select Information Item → Data type → tTransaction then close the panel.
Create the Transaction Dispute Risk decision node and add the Transaction node for data input and the Risk Predictor node for the function:
In the Model window of the DMN editor, drag a decision data node to the DMN editor palette.
- Rename the node Transaction Dispute Risk.
- Select the Risk Predictor node and drag the arrow from the top right of the node to the Transaction Dispute Risk node.
- Select the Transaction node and drag the arrow from the bottom right of the node to the Transaction Dispute Risk node.
In the Transaction Dispute Risk node, create the Risk predictor invocation function:
- Select the Transaction Dispute Risk node and click the edit icon on the left side of the node.
- Click Select expression and select Invocation from the menu.
- Enter Risk Predictor in the Enter function box.
- Click P1.
-
In the Edit Parameter dialog, enter
amount
in the Name box, select number from the Data Type menu, and press the Enter key. - Click Select expression and select Literal expression from the menu.
-
Enter
Transaction.transaction_amount
in the box next to amount. - Right-click on 1 and select Insert below. The Edit Parameter dialog opens.
- Enter holder_index in the Name box, select number from the Data Type menu, and press the Enter key.
- Click Select expression on row 2 and select Literal expression from the menu.
-
Enter
Transaction.cardholder_identifier
in the box next to amount.
Create the Risk Threshold input data node with the data type number:
- In the Model window of the DMN editor, drag an input data node to the DMN editor palette.
- Rename the node Risk Threshold.
- Select the node then click the properties pencil icon in the upper-right corner of the window.
- In the Properties panel, select Information Item → Data type → number then close the panel.
Create the Can be automatically processed? decision node that takes as inputs the Transaction Dispute Risk and the Risk threshold nodes:
- Drag a decision node to the DMN editor palette and rename it Can be automatically processed?.
- Select the node, then click the edit icon on the upper-left side of the node.
- Click Select expression and then select Literal expression from the menu.
-
Enter
Transaction Dispute Risk.predicted_dispute_risk < Risk Threshold
in the box. - Select the Transaction Dispute Risk node and drag the arrow in the top left of the node to the Can be automatically processed? node.
- Select the Risk Threshold node and drag the arrow from the bottom left of the node to the Can be automatically processed? node.
Save the model and build the project:
- In the DMN editor, click Save.
- If necessary, correct any errors that appear.
- To return to the project window, click Credit Card Dispute in the breadcrumb trail.
- Click Build. The project should successfully build.
Add and run a test scenario:
- Click Add Asset.
- Select Test Scenario.
-
In the Create new Test Scenario dialog, enter the name
Test Dispute Transaction Check
, select com from the Package menu, and select DMN. - Select Dispute Transaction Check.dmn from the Choose a DMN asset menu and click OK. The test template builds.
Enter the following values and click Save:
NoteDo not add a value to the Transaction Dispute Risk column. This value is determined by the test scenario.
Table 89.1. Test scenario parameters
Description Risk Threshold cardholder_identifier transaction_amount Can be automatically processed? Risk threshold 5, automatically processed
5
1234
1000
true
Risk threshold 4, amount = 1000, not processed
4
1234
1000
false
Risk threshold 4, amount = 180, automatically processed
4
1234
180
true
Risk threshold 1, amount = 1, not processed
1
1234
1
false
- To run the test, click the Play button, to the right of Validate. The results appear in the Test Report panel on the right of the screen.
89.2. Credit card transaction dispute exercise PMML file
Use the following XML content to create the dtree_risk_predictor.pmml
file in the Section 89.1, “Using a PMML model with a DMN model to resolve credit card transaction disputes” exercise.
<?xml version="1.0" encoding="UTF-8"?> <PMML xmlns="http://www.dmg.org/PMML-4_2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="4.2" xsi:schemaLocation="http://www.dmg.org/PMML-4_2 http://www.dmg.org/v4-2-1/pmml-4-2.xsd"> <Header copyright="Copyright (c) 2018 Software AG" description="Default Description"> <Application name="Nyoka" version="4.3.0" /> <Timestamp>2020-10-09 14:27:26.622723</Timestamp> </Header> <DataDictionary numberOfFields="3"> <DataField name="amount" optype="continuous" dataType="double" /> <DataField name="holder_index" optype="continuous" dataType="double" /> <DataField name="dispute_risk" optype="categorical" dataType="integer"> <Value value="1" /> <Value value="2" /> <Value value="3" /> <Value value="4" /> <Value value="5" /> </DataField> </DataDictionary> <TreeModel modelName="DecisionTreeClassifier" functionName="classification" missingValuePenalty="1.0"> <MiningSchema> <MiningField name="amount" usageType="active" optype="continuous" /> <MiningField name="holder_index" usageType="active" optype="continuous" /> <MiningField name="dispute_risk" usageType="target" optype="categorical" /> </MiningSchema> <Output> <OutputField name="probability_1" optype="continuous" dataType="double" feature="probability" value="1" /> <OutputField name="probability_2" optype="continuous" dataType="double" feature="probability" value="2" /> <OutputField name="probability_3" optype="continuous" dataType="double" feature="probability" value="3" /> <OutputField name="probability_4" optype="continuous" dataType="double" feature="probability" value="4" /> <OutputField name="probability_5" optype="continuous" dataType="double" feature="probability" value="5" /> <OutputField name="predicted_dispute_risk" optype="categorical" dataType="integer" feature="predictedValue" /> </Output> <Node id="0" recordCount="600.0"> <True /> <Node id="1" recordCount="200.0"> <SimplePredicate field="amount" operator="lessOrEqual" value="99.94000244140625" /> <Node id="2" score="2" recordCount="55.0"> <SimplePredicate field="holder_index" operator="lessOrEqual" value="0.5" /> <ScoreDistribution value="1" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="2" recordCount="55.0" confidence="1.0" /> <ScoreDistribution value="3" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="4" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="5" recordCount="0.0" confidence="0.0" /> </Node> <Node id="3" score="1" recordCount="145.0"> <SimplePredicate field="holder_index" operator="greaterThan" value="0.5" /> <ScoreDistribution value="1" recordCount="145.0" confidence="1.0" /> <ScoreDistribution value="2" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="3" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="4" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="5" recordCount="0.0" confidence="0.0" /> </Node> </Node> <Node id="4" recordCount="400.0"> <SimplePredicate field="amount" operator="greaterThan" value="99.94000244140625" /> <Node id="5" recordCount="105.0"> <SimplePredicate field="holder_index" operator="lessOrEqual" value="0.5" /> <Node id="6" score="3" recordCount="54.0"> <SimplePredicate field="amount" operator="lessOrEqual" value="150.4550018310547" /> <ScoreDistribution value="1" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="2" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="3" recordCount="54.0" confidence="1.0" /> <ScoreDistribution value="4" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="5" recordCount="0.0" confidence="0.0" /> </Node> <Node id="7" recordCount="51.0"> <SimplePredicate field="amount" operator="greaterThan" value="150.4550018310547" /> <Node id="8" recordCount="40.0"> <SimplePredicate field="amount" operator="lessOrEqual" value="200.00499725341797" /> <Node id="9" recordCount="36.0"> <SimplePredicate field="amount" operator="lessOrEqual" value="195.4949951171875" /> <Node id="10" recordCount="2.0"> <SimplePredicate field="amount" operator="lessOrEqual" value="152.2050018310547" /> <Node id="11" score="4" recordCount="1.0"> <SimplePredicate field="amount" operator="lessOrEqual" value="151.31500244140625" /> <ScoreDistribution value="1" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="2" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="3" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="4" recordCount="1.0" confidence="1.0" /> <ScoreDistribution value="5" recordCount="0.0" confidence="0.0" /> </Node> <Node id="12" score="3" recordCount="1.0"> <SimplePredicate field="amount" operator="greaterThan" value="151.31500244140625" /> <ScoreDistribution value="1" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="2" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="3" recordCount="1.0" confidence="1.0" /> <ScoreDistribution value="4" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="5" recordCount="0.0" confidence="0.0" /> </Node> </Node> <Node id="13" recordCount="34.0"> <SimplePredicate field="amount" operator="greaterThan" value="152.2050018310547" /> <Node id="14" recordCount="20.0"> <SimplePredicate field="amount" operator="lessOrEqual" value="176.5050048828125" /> <Node id="15" recordCount="19.0"> <SimplePredicate field="amount" operator="lessOrEqual" value="176.06500244140625" /> <Node id="16" score="4" recordCount="9.0"> <SimplePredicate field="amount" operator="lessOrEqual" value="166.6449966430664" /> <ScoreDistribution value="1" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="2" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="3" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="4" recordCount="9.0" confidence="1.0" /> <ScoreDistribution value="5" recordCount="0.0" confidence="0.0" /> </Node> <Node id="17" recordCount="10.0"> <SimplePredicate field="amount" operator="greaterThan" value="166.6449966430664" /> <Node id="18" score="3" recordCount="1.0"> <SimplePredicate field="amount" operator="lessOrEqual" value="167.97999572753906" /> <ScoreDistribution value="1" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="2" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="3" recordCount="1.0" confidence="1.0" /> <ScoreDistribution value="4" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="5" recordCount="0.0" confidence="0.0" /> </Node> <Node id="19" score="4" recordCount="9.0"> <SimplePredicate field="amount" operator="greaterThan" value="167.97999572753906" /> <ScoreDistribution value="1" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="2" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="3" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="4" recordCount="9.0" confidence="1.0" /> <ScoreDistribution value="5" recordCount="0.0" confidence="0.0" /> </Node> </Node> </Node> <Node id="20" score="3" recordCount="1.0"> <SimplePredicate field="amount" operator="greaterThan" value="176.06500244140625" /> <ScoreDistribution value="1" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="2" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="3" recordCount="1.0" confidence="1.0" /> <ScoreDistribution value="4" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="5" recordCount="0.0" confidence="0.0" /> </Node> </Node> <Node id="21" score="4" recordCount="14.0"> <SimplePredicate field="amount" operator="greaterThan" value="176.5050048828125" /> <ScoreDistribution value="1" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="2" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="3" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="4" recordCount="14.0" confidence="1.0" /> <ScoreDistribution value="5" recordCount="0.0" confidence="0.0" /> </Node> </Node> </Node> <Node id="22" recordCount="4.0"> <SimplePredicate field="amount" operator="greaterThan" value="195.4949951171875" /> <Node id="23" score="3" recordCount="1.0"> <SimplePredicate field="amount" operator="lessOrEqual" value="195.76499938964844" /> <ScoreDistribution value="1" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="2" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="3" recordCount="1.0" confidence="1.0" /> <ScoreDistribution value="4" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="5" recordCount="0.0" confidence="0.0" /> </Node> <Node id="24" recordCount="3.0"> <SimplePredicate field="amount" operator="greaterThan" value="195.76499938964844" /> <Node id="25" score="4" recordCount="1.0"> <SimplePredicate field="amount" operator="lessOrEqual" value="196.74500274658203" /> <ScoreDistribution value="1" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="2" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="3" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="4" recordCount="1.0" confidence="1.0" /> <ScoreDistribution value="5" recordCount="0.0" confidence="0.0" /> </Node> <Node id="26" recordCount="2.0"> <SimplePredicate field="amount" operator="greaterThan" value="196.74500274658203" /> <Node id="27" score="3" recordCount="1.0"> <SimplePredicate field="amount" operator="lessOrEqual" value="197.5800018310547" /> <ScoreDistribution value="1" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="2" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="3" recordCount="1.0" confidence="1.0" /> <ScoreDistribution value="4" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="5" recordCount="0.0" confidence="0.0" /> </Node> <Node id="28" score="4" recordCount="1.0"> <SimplePredicate field="amount" operator="greaterThan" value="197.5800018310547" /> <ScoreDistribution value="1" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="2" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="3" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="4" recordCount="1.0" confidence="1.0" /> <ScoreDistribution value="5" recordCount="0.0" confidence="0.0" /> </Node> </Node> </Node> </Node> </Node> <Node id="29" score="5" recordCount="11.0"> <SimplePredicate field="amount" operator="greaterThan" value="200.00499725341797" /> <ScoreDistribution value="1" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="2" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="3" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="4" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="5" recordCount="11.0" confidence="1.0" /> </Node> </Node> </Node> <Node id="30" recordCount="295.0"> <SimplePredicate field="holder_index" operator="greaterThan" value="0.5" /> <Node id="31" score="2" recordCount="170.0"> <SimplePredicate field="amount" operator="lessOrEqual" value="150.93499755859375" /> <ScoreDistribution value="1" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="2" recordCount="170.0" confidence="1.0" /> <ScoreDistribution value="3" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="4" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="5" recordCount="0.0" confidence="0.0" /> </Node> <Node id="32" recordCount="125.0"> <SimplePredicate field="amount" operator="greaterThan" value="150.93499755859375" /> <Node id="33" recordCount="80.0"> <SimplePredicate field="holder_index" operator="lessOrEqual" value="2.5" /> <Node id="34" recordCount="66.0"> <SimplePredicate field="amount" operator="lessOrEqual" value="199.13500213623047" /> <Node id="35" score="3" recordCount="10.0"> <SimplePredicate field="amount" operator="lessOrEqual" value="155.56999969482422" /> <ScoreDistribution value="1" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="2" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="3" recordCount="10.0" confidence="1.0" /> <ScoreDistribution value="4" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="5" recordCount="0.0" confidence="0.0" /> </Node> <Node id="36" recordCount="56.0"> <SimplePredicate field="amount" operator="greaterThan" value="155.56999969482422" /> <Node id="37" score="2" recordCount="1.0"> <SimplePredicate field="amount" operator="lessOrEqual" value="155.9000015258789" /> <ScoreDistribution value="1" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="2" recordCount="1.0" confidence="1.0" /> <ScoreDistribution value="3" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="4" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="5" recordCount="0.0" confidence="0.0" /> </Node> <Node id="38" recordCount="55.0"> <SimplePredicate field="amount" operator="greaterThan" value="155.9000015258789" /> <Node id="39" recordCount="31.0"> <SimplePredicate field="amount" operator="lessOrEqual" value="176.3699951171875" /> <Node id="40" recordCount="30.0"> <SimplePredicate field="amount" operator="lessOrEqual" value="175.72000122070312" /> <Node id="41" recordCount="19.0"> <SimplePredicate field="amount" operator="lessOrEqual" value="168.06999969482422" /> <Node id="42" recordCount="6.0"> <SimplePredicate field="amount" operator="lessOrEqual" value="158.125" /> <Node id="43" score="3" recordCount="5.0"> <SimplePredicate field="amount" operator="lessOrEqual" value="157.85499572753906" /> <ScoreDistribution value="1" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="2" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="3" recordCount="5.0" confidence="1.0" /> <ScoreDistribution value="4" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="5" recordCount="0.0" confidence="0.0" /> </Node> <Node id="44" score="2" recordCount="1.0"> <SimplePredicate field="amount" operator="greaterThan" value="157.85499572753906" /> <ScoreDistribution value="1" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="2" recordCount="1.0" confidence="1.0" /> <ScoreDistribution value="3" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="4" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="5" recordCount="0.0" confidence="0.0" /> </Node> </Node> <Node id="45" score="3" recordCount="13.0"> <SimplePredicate field="amount" operator="greaterThan" value="158.125" /> <ScoreDistribution value="1" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="2" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="3" recordCount="13.0" confidence="1.0" /> <ScoreDistribution value="4" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="5" recordCount="0.0" confidence="0.0" /> </Node> </Node> <Node id="46" recordCount="11.0"> <SimplePredicate field="amount" operator="greaterThan" value="168.06999969482422" /> <Node id="47" score="2" recordCount="1.0"> <SimplePredicate field="amount" operator="lessOrEqual" value="168.69499969482422" /> <ScoreDistribution value="1" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="2" recordCount="1.0" confidence="1.0" /> <ScoreDistribution value="3" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="4" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="5" recordCount="0.0" confidence="0.0" /> </Node> <Node id="48" recordCount="10.0"> <SimplePredicate field="amount" operator="greaterThan" value="168.69499969482422" /> <Node id="49" recordCount="4.0"> <SimplePredicate field="holder_index" operator="lessOrEqual" value="1.5" /> <Node id="50" score="2" recordCount="1.0"> <SimplePredicate field="amount" operator="lessOrEqual" value="172.0250015258789" /> <ScoreDistribution value="1" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="2" recordCount="1.0" confidence="1.0" /> <ScoreDistribution value="3" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="4" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="5" recordCount="0.0" confidence="0.0" /> </Node> <Node id="51" score="3" recordCount="3.0"> <SimplePredicate field="amount" operator="greaterThan" value="172.0250015258789" /> <ScoreDistribution value="1" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="2" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="3" recordCount="3.0" confidence="1.0" /> <ScoreDistribution value="4" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="5" recordCount="0.0" confidence="0.0" /> </Node> </Node> <Node id="52" score="3" recordCount="6.0"> <SimplePredicate field="holder_index" operator="greaterThan" value="1.5" /> <ScoreDistribution value="1" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="2" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="3" recordCount="6.0" confidence="1.0" /> <ScoreDistribution value="4" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="5" recordCount="0.0" confidence="0.0" /> </Node> </Node> </Node> </Node> <Node id="53" score="2" recordCount="1.0"> <SimplePredicate field="amount" operator="greaterThan" value="175.72000122070312" /> <ScoreDistribution value="1" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="2" recordCount="1.0" confidence="1.0" /> <ScoreDistribution value="3" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="4" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="5" recordCount="0.0" confidence="0.0" /> </Node> </Node> <Node id="54" recordCount="24.0"> <SimplePredicate field="amount" operator="greaterThan" value="176.3699951171875" /> <Node id="55" score="3" recordCount="16.0"> <SimplePredicate field="amount" operator="lessOrEqual" value="192.0999984741211" /> <ScoreDistribution value="1" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="2" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="3" recordCount="16.0" confidence="1.0" /> <ScoreDistribution value="4" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="5" recordCount="0.0" confidence="0.0" /> </Node> <Node id="56" recordCount="8.0"> <SimplePredicate field="amount" operator="greaterThan" value="192.0999984741211" /> <Node id="57" score="2" recordCount="1.0"> <SimplePredicate field="amount" operator="lessOrEqual" value="192.75499725341797" /> <ScoreDistribution value="1" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="2" recordCount="1.0" confidence="1.0" /> <ScoreDistribution value="3" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="4" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="5" recordCount="0.0" confidence="0.0" /> </Node> <Node id="58" score="3" recordCount="7.0"> <SimplePredicate field="amount" operator="greaterThan" value="192.75499725341797" /> <ScoreDistribution value="1" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="2" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="3" recordCount="7.0" confidence="1.0" /> <ScoreDistribution value="4" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="5" recordCount="0.0" confidence="0.0" /> </Node> </Node> </Node> </Node> </Node> </Node> <Node id="59" recordCount="14.0"> <SimplePredicate field="amount" operator="greaterThan" value="199.13500213623047" /> <Node id="60" score="5" recordCount="10.0"> <SimplePredicate field="holder_index" operator="lessOrEqual" value="1.5" /> <ScoreDistribution value="1" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="2" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="3" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="4" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="5" recordCount="10.0" confidence="1.0" /> </Node> <Node id="61" score="4" recordCount="4.0"> <SimplePredicate field="holder_index" operator="greaterThan" value="1.5" /> <ScoreDistribution value="1" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="2" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="3" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="4" recordCount="4.0" confidence="1.0" /> <ScoreDistribution value="5" recordCount="0.0" confidence="0.0" /> </Node> </Node> </Node> <Node id="62" recordCount="45.0"> <SimplePredicate field="holder_index" operator="greaterThan" value="2.5" /> <Node id="63" score="2" recordCount="37.0"> <SimplePredicate field="amount" operator="lessOrEqual" value="199.13999938964844" /> <ScoreDistribution value="1" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="2" recordCount="37.0" confidence="1.0" /> <ScoreDistribution value="3" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="4" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="5" recordCount="0.0" confidence="0.0" /> </Node> <Node id="64" score="4" recordCount="8.0"> <SimplePredicate field="amount" operator="greaterThan" value="199.13999938964844" /> <ScoreDistribution value="1" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="2" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="3" recordCount="0.0" confidence="0.0" /> <ScoreDistribution value="4" recordCount="8.0" confidence="1.0" /> <ScoreDistribution value="5" recordCount="0.0" confidence="0.0" /> </Node> </Node> </Node> </Node> </Node> </Node> </TreeModel> </PMML>