@frontlinesystems/rason-mcp-server 2026.5.1 → 2026.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +35 -35
- package/examples/EXAMPLES_REFERENCE.md +128 -128
- package/examples/{optimization → Optimization}/Conic/AirlineHubConic.json +111 -111
- package/examples/{optimization → Optimization}/Conic/AirlineHubConic2.json +108 -108
- package/examples/{optimization → Optimization}/Conic/AirlineHubConic3.json +111 -111
- package/examples/{optimization → Optimization}/Conic/AirlineHubConic4.json +99 -99
- package/examples/{optimization → Optimization}/Conic/AirlineHubConic5.json +101 -101
- package/examples/{optimization → Optimization}/DataBinding/ProductMixCsv.json +81 -81
- package/examples/{optimization → Optimization}/DataBinding/ProductMixCsv4.json +96 -96
- package/examples/{optimization → Optimization}/DataBinding/ProductMixExcel.json +73 -73
- package/examples/{optimization → Optimization}/DataBinding/ProductMixExcel1.json +86 -86
- package/examples/{optimization → Optimization}/DataBinding/ProductMixExcel11.json +108 -108
- package/examples/{optimization → Optimization}/DataBinding/ProductMixExcel2.json +77 -77
- package/examples/{optimization → Optimization}/DataBinding/ProductMixTab.json +89 -89
- package/examples/{optimization → Optimization}/DataBinding/ProductMixTab1.json +73 -73
- package/examples/{optimization → Optimization}/DataBinding/ProductMixTab2.json +77 -77
- package/examples/{optimization → Optimization}/Linear/Inventory.json +199 -199
- package/examples/{optimization → Optimization}/Linear/Matop.json +119 -119
- package/examples/{optimization → Optimization}/Linear/ProductMix.json +97 -97
- package/examples/{optimization → Optimization}/Linear/ProductMix2.json +72 -72
- package/examples/{optimization → Optimization}/Linear/ProductMix3.json +49 -49
- package/examples/{optimization → Optimization}/Linear/ProductMix4.json +56 -56
- package/examples/{optimization → Optimization}/Linear/ProductMixCsv1.json +106 -106
- package/examples/{optimization → Optimization}/Linear/ProductMixCsv2.json +106 -106
- package/examples/{optimization → Optimization}/Linear/ProductMixSQL11.json +82 -82
- package/examples/{optimization → Optimization}/Linear/Rowop.json +126 -126
- package/examples/{optimization → Optimization}/NonLinear/AirlineHub.json +63 -63
- package/examples/{optimization → Optimization}/NonLinear/AirlineHub2.json +47 -47
- package/examples/{optimization → Optimization}/NonLinear/AirlineHub3.json +47 -47
- package/examples/{optimization → Optimization}/NonSmooth/Inventory2.json +159 -159
- package/examples/{optimization → Optimization}/Quadratic/PortfolioOpt.json +55 -55
- package/examples/{optimization → Optimization}/Quadratic/PortfolioOpt2.json +65 -65
- package/examples/{optimization → Optimization}/WithUncertainty/GasCompanyChance.json +78 -78
- package/examples/{optimization → Optimization}/WithUncertainty/GasCompanyRecourse.json +78 -78
- package/examples/{optimization → Optimization}/WithUncertainty/ProjectSelect.json +77 -77
- package/examples/{optimization → Optimization}/WithUncertainty/ProjectSelect2.json +81 -81
- package/examples/{optimization → Optimization}/WithUncertainty/ProjectSelect3.json +84 -84
- package/examples/{optimization → Optimization}/WithUncertainty/ProjectSelect4.json +74 -74
- package/examples/{simulation → Simulation}/CandyStoreSalesUsingSIP.json +147 -147
- package/examples/{simulation → Simulation}/CollegeFundGrowth1.json +423 -423
- package/examples/{simulation → Simulation}/CollegeFundGrowth1SIPModel.json +27 -27
- package/examples/{simulation → Simulation}/CollegeFundGrowth2.json +415 -415
- package/examples/{simulation → Simulation}/CollegeFundGrowthSIP.json +401 -401
- package/examples/{simulation → Simulation}/GBMSimulationModel.json +236 -236
- package/examples/{simulation → Simulation}/YieldManagement(Sim).json +69 -69
- package/examples/{simulation → Simulation}/YieldManagement2(Sim).json +72 -72
- package/examples/calculation/DMNExamples/DMN Box Fun with typeDef result.json +53 -53
- package/examples/calculation/DMNExamples/DMN Context example.json +69 -69
- package/examples/calculation/DMNExamples/DMN DT with typeDef result.json +43 -43
- package/examples/calculation/DMNExamples/FEEL Date Time example.json +28 -28
- package/examples/calculation/DMNExamples/FEEL For iteration example.json +66 -66
- package/examples/calculation/DMNExamples/FEEL For with two indices.json +15 -15
- package/examples/calculation/DMNExamples/FEEL For with typeDef result.json +88 -88
- package/examples/calculation/DMNExamples/FEEL If Then Else example.json +25 -25
- package/examples/calculation/DMNExamples/FEEL List example.json +37 -37
- package/examples/calculation/DMNExamples/FEEL List operator.json +17 -17
- package/examples/calculation/DMNExamples/FEEL List with typeDef collection.json +36 -36
- package/examples/calculation/DMNExamples/FEEL Some or Every example.json +65 -65
- package/examples/calculation/DecisionTables/DT Datasource example.json +52 -52
- package/examples/calculation/DecisionTables/DT Date and Time examples.json +91 -91
- package/examples/calculation/DecisionTables/DT Expression example.json +32 -32
- package/examples/calculation/DecisionTables/DT Hit Policy examples.json +136 -136
- package/examples/calculation/DecisionTables/DT Loan Recommend model.json +81 -81
- package/examples/calculation/DecisionTables/DT Loan Strategy Model and Predictive CSV-XML.json +218 -218
- package/examples/calculation/DecisionTables/DT Loan Strategy model and Datasource.json +286 -286
- package/examples/calculation/DecisionTables/DT Loan Strategy model and Predictive.json +203 -203
- package/examples/calculation/DecisionTables/DT Loan Strategy model by scratch.json +214 -214
- package/examples/calculation/DecisionTables/DT Output Order example.json +39 -39
- package/examples/calculation/DecisionTables/DT Unique example.json +38 -38
- package/examples/calculation/TypeDefinitions/TypeDefCF.json +64 -64
- package/examples/calculation/TypeDefinitions/TypeDefDT.json +57 -57
- package/examples/datamining/AffinityAnalysis/AssociationRules.json +51 -51
- package/examples/datamining/Classification/DecisionTree.json +90 -90
- package/examples/datamining/Classification/DiscriminantAnalysis.json +81 -81
- package/examples/datamining/Classification/Ensembles/Bagging.json +66 -66
- package/examples/datamining/Classification/Ensembles/Boosting.json +67 -67
- package/examples/datamining/Classification/Ensembles/RandomTrees.json +91 -91
- package/examples/datamining/Classification/FindBestModel.json +86 -86
- package/examples/datamining/Classification/LogisticRegression.json +82 -82
- package/examples/datamining/Classification/NaiveBayes.json +78 -78
- package/examples/datamining/Classification/NearestNeighbors.json +84 -84
- package/examples/datamining/Classification/NeuralNetwork.json +92 -92
- package/examples/datamining/Clustering/Hierarchical.json +54 -54
- package/examples/datamining/Clustering/KMeans.json +71 -71
- package/examples/datamining/DataSources/DelimitedFile.json +49 -49
- package/examples/datamining/DataSources/JSONFile.json +49 -49
- package/examples/datamining/DataSources/MSAccessDatabase.json +49 -49
- package/examples/datamining/DataSources/MSExcelTable.json +50 -50
- package/examples/datamining/DataSources/MSSQLDatabase.json +49 -49
- package/examples/datamining/DataSources/ODATATable.json +49 -49
- package/examples/datamining/DataSources/ODBCDatabase.json +49 -49
- package/examples/datamining/FeatureSelection/LinearWrapping.json +53 -53
- package/examples/datamining/FeatureSelection/LogisticWrapping.json +56 -56
- package/examples/datamining/FeatureSelection/Univariate.json +78 -78
- package/examples/datamining/Regression/DecisionTree.json +82 -82
- package/examples/datamining/Regression/Ensembles/Bagging.json +62 -62
- package/examples/datamining/Regression/Ensembles/Boosting.json +62 -62
- package/examples/datamining/Regression/Ensembles/RandomTrees.json +78 -78
- package/examples/datamining/Regression/FindBestModel.json +86 -86
- package/examples/datamining/Regression/LinearRegression.json +124 -124
- package/examples/datamining/Regression/NearestNeighbors.json +77 -77
- package/examples/datamining/Regression/NeuralNetwork.json +82 -82
- package/examples/datamining/Scoring/JSONClassifier.json +62 -62
- package/examples/datamining/Scoring/JSONClassifierNN.json +62 -62
- package/examples/datamining/Scoring/JSONClusterizer.json +37 -37
- package/examples/datamining/Scoring/JSONForecaster.json +49 -49
- package/examples/datamining/Scoring/JSONLinearRegression.json +56 -56
- package/examples/datamining/Scoring/JSONPCA.json +41 -41
- package/examples/datamining/Scoring/JSONRegressor.json +56 -56
- package/examples/datamining/Scoring/JSONTransformer.json +38 -38
- package/examples/datamining/Scoring/PMMLClassifier.json +42 -42
- package/examples/datamining/Scoring/PMMLForecaster.json +43 -43
- package/examples/datamining/Scoring/PMMLRegressor.json +38 -38
- package/examples/datamining/Scoring/PMMLTransformer.json +38 -38
- package/examples/datamining/Simulation/LinearRegressionSimulation.json +117 -117
- package/examples/datamining/Simulation/SyntheticDataGeneration.json +108 -108
- package/examples/datamining/Simulation/pmml-risk-scoring.json +62 -62
- package/examples/datamining/Summarizer/Summarization.json +54 -54
- package/examples/datamining/TextMining/LatentSemanticAnalysis.json +51 -51
- package/examples/datamining/TextMining/TfIdf-FileData.json +65 -65
- package/examples/datamining/TextMining/TfIdf-InlineData.json +55 -55
- package/examples/datamining/TimeSeries/AddHoltWinters.json +79 -79
- package/examples/datamining/TimeSeries/Arima.json +74 -74
- package/examples/datamining/TimeSeries/DoubleExponential.json +65 -65
- package/examples/datamining/TimeSeries/Exponential.json +64 -64
- package/examples/datamining/TimeSeries/LagAnalysis.json +48 -48
- package/examples/datamining/TimeSeries/MovingAverage.json +65 -65
- package/examples/datamining/TimeSeries/MulHoltWinters.json +65 -65
- package/examples/datamining/TimeSeries/NoTrendHoltWinters.json +65 -65
- package/examples/datamining/Transformation/Binning.json +69 -69
- package/examples/datamining/Transformation/CanonicalVariateAnalysis.json +47 -47
- package/examples/datamining/Transformation/CategoryReduction.json +51 -51
- package/examples/datamining/Transformation/Factorization.json +50 -50
- package/examples/datamining/Transformation/MissingDataHandling.json +83 -83
- package/examples/datamining/Transformation/OneHotEncoding-DataInline.json +54 -54
- package/examples/datamining/Transformation/OneHotEncoding-DatainFile.json +48 -48
- package/examples/datamining/Transformation/PartitionTimeSeries.json +48 -48
- package/examples/datamining/Transformation/Partitioning-DF.json +72 -72
- package/examples/datamining/Transformation/Partitioning.json +46 -46
- package/examples/datamining/Transformation/PartitioningWithOversampling-DF.json +65 -65
- package/examples/datamining/Transformation/PartitioningWithOversampling.json +44 -44
- package/examples/datamining/Transformation/PrincipalComponentsAnalysis.json +52 -52
- package/examples/datamining/Transformation/Rescaling.json +67 -67
- package/examples/datamining/Transformation/Sampling.json +43 -43
- package/examples/datamining/Transformation/StratifiedSampling.json +46 -46
- package/examples/flow/SQLServerTransform.json +260 -260
- package/examples/flow/dm-calc-pipeline.json +277 -277
- package/examples/flow/dm-pipeline-simulation.json +113 -113
- package/examples/flow/opt-sim-pipeline.json +159 -159
- package/examples/flow/sim-dm-pipeline.json +106 -106
- package/examples/flow/sim-sim-pipeline.json +136 -136
- package/examples/index.json +4678 -4678
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/DataFiltering/ListwithFilter.json +52 -52
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/ProductMix5.json +57 -57
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/compoundWhileStatement.json +35 -35
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/ifThenElseStatement.json +33 -33
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/Loops/nestedLoop.json +25 -25
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/ParallelArray.json +47 -47
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/indexedArray.json +69 -69
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/nonParallelArray.json +49 -49
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/sumAggregateExample.json +337 -337
- package/examples/rason-features/Arrays_Loops_Tables/ArrayExamples/tsp.json +61 -61
- package/examples/rason-features/BoxIterators/Box_Fun_Loop_Iter_Sim_RASON.json +190 -190
- package/examples/rason-features/BoxIterators/Box_Fun_Loop_Sim_RASON.json +75 -75
- package/examples/rason-features/BoxIterators/Box_Fun_Sim_RASON.json +108 -108
- package/examples/rason-features/BoxIterators/Box_Iter_SIM_RASON.json +68 -68
- package/examples/rason-features/BoxIterators/Box_Iterator_Calc_Loop.json +183 -183
- package/examples/rason-features/BoxIterators/Box_Iterator_with_typeDef_partial.json +79 -79
- package/examples/rason-features/BoxLambdaExamples/BoxFunOptimize.json +154 -154
- package/examples/rason-features/BoxLambdaExamples/BoxFunSimulate.json +118 -118
- package/examples/rason-features/BoxLambdaExamples/LambdaFunOptimize.json +142 -142
- package/examples/rason-features/BoxLambdaExamples/LambdaFunSimulate.json +81 -81
- package/examples/rason-features/ReferenceGuide/RGFirehouseLocation.json +69 -69
- package/examples/rason-features/ReferenceGuide/RGFirehouseLocationConic.json +113 -113
- package/examples/rason-features/ReferenceGuide/RGProductMixCsv1.json +107 -107
- package/examples/rason-features/ReferenceGuide/RGProductMixExcel11.json +117 -117
- package/examples/rason-features/ReferenceGuide/RGProductMixSQL11.json +108 -108
- package/examples/rason-features/UserGuide/UGAirlineHubCSV.json +67 -67
- package/examples/rason-features/UserGuide/UGForecast.json +50 -50
- package/examples/rason-features/UserGuide/UGProductMix1.json +48 -48
- package/examples/rason-features/UserGuide/UGProductMix2.json +48 -48
- package/examples/rason-features/UserGuide/UGProductMixTab1.json +67 -67
- package/examples/rason-features/UserGuide/UGProductMixTab2.json +76 -76
- package/examples/rason-features/UserGuide/UGProductMixTab3.json +66 -66
- package/examples/rason-features/UserGuide/UGProductMixTab4.json +70 -70
- package/examples/rason-features/UserGuide/UGProductMixTab5.json +67 -67
- package/examples/rason-features/UserGuide/UGProjectSelect0.json +91 -91
- package/examples/rason-features/UserGuide/UGProjectSelect1.json +74 -74
- package/examples/rason-features/UserGuide/UGProjectSelect2.json +74 -74
- package/examples/rason-features/UserGuide/UGYieldManagement1.json +61 -61
- package/examples/rason-features/UserGuide/UGYieldManagement2.json +61 -61
- package/examples/rason-features/UserGuide/UGYieldManagement3.json +63 -63
- package/out/index.cjs +1 -1
- package/package.json +3 -2
|
@@ -1,204 +1,204 @@
|
|
|
1
|
-
{
|
|
2
|
-
"modelName": "DTLoanStrategyPredictive",
|
|
3
|
-
"modelDescription": "RASON Decision Table Example: Loan Strategy using a PMML predictive model inline: The difference between this example and the original DTLoanStrategy example is that this example expands on the DT Loan Strategy Model by adding an element to the formula, appRiskScore. The formula for appRiskScore returns the minimum of 2 outputs. The first output is produced from a linear regression model scoring new data contained in predictiveInput (within the data section). The second output is from the decision table, tblAppRiskScore, given the inputs: custAge (40), maritalStatus (single) and employmentStatus (selfemployed).",
|
|
4
|
-
"modelType": "calculation",
|
|
5
|
-
"decisionTables": {
|
|
6
|
-
"comment": "There are 8 decision tables in the decisionTables section. Outputs from some tables will be used as inputs for other tables.",
|
|
7
|
-
"tblAppRiskScore": {
|
|
8
|
-
"comment": "This decision table accepts 3 inputs, customer age, marital status and employment status, and returns a partial risk score. The collection of results will be added together to create the partial score. Note that the inputValues property limits the age to be 18 to 120, inclusive, the marital status to be s for single or m for married, the employment status as unemployed, employed, selfEmployed or student. A 40 yo single self employed person would be assigned a partialScore = 43 (rule 4) + 25 (rule 6) + 45 (rule 10) = 113.",
|
|
9
|
-
"inputs": [ "cust age", "marital status", "employment status" ],
|
|
10
|
-
"outputs": [ "partial score" ],
|
|
11
|
-
"refTypes": [ "", "", "", "" ],
|
|
12
|
-
"inputValues": [
|
|
13
|
-
[ "[18..120]", "s", "unemployed" ],
|
|
14
|
-
[ "", "m", "employed" ],
|
|
15
|
-
[ "", "", "selfemployed" ],
|
|
16
|
-
[ "", "", "student" ]
|
|
17
|
-
],
|
|
18
|
-
"rules": [
|
|
19
|
-
[ "[18..21]", "-", "-", 32 ],
|
|
20
|
-
[ "(21..25]", "-", "-", 35 ],
|
|
21
|
-
[ "(25..35]", "-", "-", 40 ],
|
|
22
|
-
[ "(35..49]", "-", "-", 43 ],
|
|
23
|
-
[ ">49", "-", "-", 48 ],
|
|
24
|
-
[ "-", "s", "-", 25 ],
|
|
25
|
-
[ "-", "m", "-", 45 ],
|
|
26
|
-
[ "-", "-", "unemployed", 15 ],
|
|
27
|
-
[ "-", "-", "student", 18 ],
|
|
28
|
-
[ "-", "-", "employed", 45 ],
|
|
29
|
-
[ "-", "-", "selfemployed", 36 ]
|
|
30
|
-
],
|
|
31
|
-
"hitPolicy": "C+"
|
|
32
|
-
},
|
|
33
|
-
"tblBureauRiskCat": {
|
|
34
|
-
"comment": "This decision table accepts 2 inputs, custExist (true if customer already has at least 1 more loans) and appRiskScore (partial score from tblAppRiskScore). With a hit policy of 'unique', only 1 rule, with a unique result, may be returned. ",
|
|
35
|
-
"inputs": [ "cust exist", "app risk score" ],
|
|
36
|
-
"outputs": [ "bureau risk cat" ],
|
|
37
|
-
"inputTypes": [ "", "" ],
|
|
38
|
-
"outputTypes": [ "" ],
|
|
39
|
-
"rules": [
|
|
40
|
-
[ false, "<100", "high" ],
|
|
41
|
-
[ false, "[100..120]", "medium" ],
|
|
42
|
-
[ false, "[120..130]", "low" ],
|
|
43
|
-
[ false, ">130", "veryLow" ],
|
|
44
|
-
[ true, "<80", "decline" ],
|
|
45
|
-
[ true, "[80..90]", "high" ],
|
|
46
|
-
[ true, "[90..110]", "medium" ],
|
|
47
|
-
[ true, ">110", "low" ]
|
|
48
|
-
],
|
|
49
|
-
"hitPolicy": "U"
|
|
50
|
-
},
|
|
51
|
-
"tblBureauCallType": {
|
|
52
|
-
"comment": "This decision table accepts 1 input, bureauRiskCat, which is the output of the tblBureauRiskCat decision table.",
|
|
53
|
-
"inputs": [ "bureau risk cat" ],
|
|
54
|
-
"outputs": [ "bureau call type" ],
|
|
55
|
-
"rules": [
|
|
56
|
-
[ "high, medium", "full" ],
|
|
57
|
-
[ "low", "mini" ],
|
|
58
|
-
[ "veryLow, decline", "none" ]
|
|
59
|
-
],
|
|
60
|
-
"hitPolicy": "U"
|
|
61
|
-
},
|
|
62
|
-
"tblEligibility": {
|
|
63
|
-
"comment": "This decision table accepts 3 inputs, bureauRiskCat (which is the output of the tblAppriskScore decision table), and the customer's age. The customer's eligibility will be returned in the result. Note that there are only two outputs: 'ineligible' or 'eligible' as given in the outputValues property.",
|
|
64
|
-
"inputs": [ "bureau risk cat", "bureau afford", "cust age" ],
|
|
65
|
-
"outputs": [ "eligibility" ],
|
|
66
|
-
"refTypes": [ "", "", "", "" ],
|
|
67
|
-
"outputValues": [ "ineligible", "eligible" ],
|
|
68
|
-
"rules": [
|
|
69
|
-
[ "decline", "-", "-", "ineligible" ],
|
|
70
|
-
[ "-", false, "-", "ineligible" ],
|
|
71
|
-
[ "-", "-", "<18", "ineligible" ],
|
|
72
|
-
[ "-", "-", "-", "eligible" ]
|
|
73
|
-
],
|
|
74
|
-
"hitPolicy": "P"
|
|
75
|
-
},
|
|
76
|
-
"tblStrategy": {
|
|
77
|
-
"comment": "This decision table accepts 2 inputs, eligibility and bureauCallType. The strategy will be returned in the result.",
|
|
78
|
-
"inputs": [ "eligibility", "bureau call type" ],
|
|
79
|
-
"outputs": [ "strategy" ],
|
|
80
|
-
"rules": [
|
|
81
|
-
[ "ineligible", "-", "decline" ],
|
|
82
|
-
[ "eligible", "full, mini", "bureau" ],
|
|
83
|
-
[ "eligible", "none", "through" ]
|
|
84
|
-
],
|
|
85
|
-
"hitPolicy": "U"
|
|
86
|
-
},
|
|
87
|
-
"tblCreditContFactor": {
|
|
88
|
-
"comment": "This decision table accepts 1 input, bureauRiskCat, and returns the creditContFactor.",
|
|
89
|
-
"inputs": [ "bureau risk cat" ],
|
|
90
|
-
"outputs": [ "credit cont factor" ],
|
|
91
|
-
"rules": [
|
|
92
|
-
[ "high, decline", 0.6 ],
|
|
93
|
-
[ "medium", 0.7 ],
|
|
94
|
-
[ "low, veryLow", 0.8 ]
|
|
95
|
-
],
|
|
96
|
-
"hitPolicy": "U"
|
|
97
|
-
}
|
|
98
|
-
},
|
|
99
|
-
"data": {
|
|
100
|
-
"comment": "The datasection contains the input parameters to the model, i.e. all input parameters are constants. This includes the predictive model, PredictivePMMLModel.",
|
|
101
|
-
"PredictivePMMLModel": {
|
|
102
|
-
"value": [ "<?xml version='1.0' encoding='utf-8'?>", "<PMML version='4.2' xsi:schemaLocation='http://www.dmg.org/PMML-4_2 http://www.dmg.org/v4-2/pmml-4-2.xsd' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns='http://www.dmg.org/PMML-4_2'>", "<Header copyright='Copyright (c) 2021 Frontline Systems Inc.' description='RegressionModel'>", "<Application name='XLMinerSDK' version='21.0.0.0'/>", "<Timestamp>2019-1-12 21:32:7</Timestamp>", "</Header>", "<DataDictionary numberOfFields='5'>", "<DataField optype='continuous' dataType='double' name='X1'/>", "<DataField optype='continuous' dataType='double' name='X2'/>", "<DataField optype='continuous' dataType='double' name='X3'/>", "<DataField optype='continuous' dataType='double' name='X4'/>", "<DataField optype='continuous' dataType='double' name='Score'/>", "</DataDictionary>", "<RegressionModel modelName='RegressionModel' functionName='regression' algorithmName='LinearRegression'>", "<MiningSchema>", "<MiningField name='Score' usageType='predicted'/>", "<MiningField name='X1' usageType='active'/>", "<MiningField name='X2' usageType='active'/>", "<MiningField name='X3' usageType='active'/>", "<MiningField name='X4' usageType='active'/>", "</MiningSchema>", "<Output>", "<OutputField optype='continuous' dataType='double' name='Predicted_Score' feature='predictedValue'/>", "</Output>", "<LocalTransformations/>", "<RegressionTable intercept='0'>", "<NumericPredictor name='X1' exponent='1' coefficient='-2.3617607737378745'/>", "<NumericPredictor name='X2' exponent='1' coefficient='1.4606586382766593'/>", "<NumericPredictor name='X3' exponent='1' coefficient='-1.0552806547103726'/>", "<NumericPredictor name='X4' exponent='1' coefficient='0.090913941664884437'/>", "</RegressionTable>", "</RegressionModel>", "</PMML>" ]
|
|
103
|
-
},
|
|
104
|
-
"PredictiveInput": {
|
|
105
|
-
"comment": "The data array, PredictveInput, contains the new data which will be scored by the predictive model, predictivePMMLModel (above). ",
|
|
106
|
-
"value": [
|
|
107
|
-
[ "X1", "X2", "X3", "X4" ],
|
|
108
|
-
[ 7, 26, 6, 60 ]
|
|
109
|
-
]
|
|
110
|
-
},
|
|
111
|
-
"custAge": {
|
|
112
|
-
"value": 40,
|
|
113
|
-
"comment": "Age of the prospective customer."
|
|
114
|
-
},
|
|
115
|
-
"maritalStatus": {
|
|
116
|
-
"value": "s",
|
|
117
|
-
"comment": "maritalst"
|
|
118
|
-
},
|
|
119
|
-
"employmentStatus": {
|
|
120
|
-
"value": "selfemployed",
|
|
121
|
-
"comment": "Employment Status for the prospective customer."
|
|
122
|
-
},
|
|
123
|
-
"custExist": {
|
|
124
|
-
"value": false,
|
|
125
|
-
"comment": "Does the customer have an existing loan? Only true or false is accepted."
|
|
126
|
-
},
|
|
127
|
-
"monthIncome": {
|
|
128
|
-
"value": 2500,
|
|
129
|
-
"comment": "Monthly income of the prospective customer."
|
|
130
|
-
},
|
|
131
|
-
"loanRate": {
|
|
132
|
-
"value": 5,
|
|
133
|
-
"comment": "Interest rate for the loan."
|
|
134
|
-
},
|
|
135
|
-
"loanTerm": {
|
|
136
|
-
"value": 30,
|
|
137
|
-
"comment": "Term length in months for the loan."
|
|
138
|
-
},
|
|
139
|
-
"loanAmnt": {
|
|
140
|
-
"value": 100000,
|
|
141
|
-
"comment": "This is the loan amount for the prospective loan."
|
|
142
|
-
},
|
|
143
|
-
"monthExpenses": {
|
|
144
|
-
"value": 1000,
|
|
145
|
-
"comment": "These are the monthly expenses for the prospective customer."
|
|
146
|
-
},
|
|
147
|
-
"loanType": {
|
|
148
|
-
"value": "standard",
|
|
149
|
-
"comment": "This is the loan type."
|
|
150
|
-
}
|
|
151
|
-
},
|
|
152
|
-
"formulas": {
|
|
153
|
-
"monthFee": {
|
|
154
|
-
"comment": "Calculate the decision tables within the 'formulas' section. Note the presence of the finalValue property to report the output value of each formula in the result. This is an optional property.",
|
|
155
|
-
"formula": "IF(loanType = 'standard', 20, IF(loanType = 'special', 25, 0))"
|
|
156
|
-
},
|
|
157
|
-
"monthRepay": {
|
|
158
|
-
"formula": "-PMT(loanRate%/12, loanTerm*12, loanAmnt)",
|
|
159
|
-
"comment": "Calculate the monthly loan payment."
|
|
160
|
-
},
|
|
161
|
-
"appRiskScore": {
|
|
162
|
-
"formula": "MIN(PsiPredict(PredictivePMMLModel,PredictiveInput),tblAppRiskScore(,,custAge, maritalStatus, employmentStatus))",
|
|
163
|
-
"comment": "Calls the tblAppRiskScore decision table to compute the applicant's risk score.",
|
|
164
|
-
"finalValue": []
|
|
165
|
-
},
|
|
166
|
-
"monthInstall": {
|
|
167
|
-
"formula": "monthRepay + monthFee",
|
|
168
|
-
"comment": "Total monthly installment."
|
|
169
|
-
},
|
|
170
|
-
"disposIncome": {
|
|
171
|
-
"formula": "monthIncome - ( monthRepay + monthExpenses)",
|
|
172
|
-
"comment": "Applicant's disposable income."
|
|
173
|
-
},
|
|
174
|
-
"bureauRiskCat": {
|
|
175
|
-
"formula": "tblBureauRiskCat(,,custExist, appRiskScore)",
|
|
176
|
-
"comment": "Calls the tblBureauRiskCat decision table. Note that output from the tblAppRiskScore decision table, appRiskScore, is an input to this decision table.",
|
|
177
|
-
"finalValue": []
|
|
178
|
-
},
|
|
179
|
-
"bureauCallType": {
|
|
180
|
-
"formula": "tblBureauCallType(,,bureauRiskCat)",
|
|
181
|
-
"comment": "Calls the tblBureauCallType decision table to compute the bureau's risk category.",
|
|
182
|
-
"finalValue": []
|
|
183
|
-
},
|
|
184
|
-
"bureauAfford": {
|
|
185
|
-
"formula": "IF(disposIncome * creditContFactor > monthInstall, TRUE, FALSE)",
|
|
186
|
-
"comment": "Determines if the applicant will be able to afford the monthly installment payment."
|
|
187
|
-
},
|
|
188
|
-
"eligibility": {
|
|
189
|
-
"formula": "tblEligibility(,,bureauRiskCat, bureauAfford, custAge)",
|
|
190
|
-
"comment": "Determines if the applicant is eligible to receive the loan.",
|
|
191
|
-
"finalValue": []
|
|
192
|
-
},
|
|
193
|
-
"strategy": {
|
|
194
|
-
"formula": "tblStrategy(,,eligibility, bureauCallType)",
|
|
195
|
-
"comment": "Uses outputs from the tblEligibility and tblBureauCallType tables to determine the best strategy for the applicant.",
|
|
196
|
-
"finalValue": []
|
|
197
|
-
},
|
|
198
|
-
"creditContFactor": {
|
|
199
|
-
"formula": "tblCreditContFactor(,,bureauRiskCat)",
|
|
200
|
-
"comment": "Calls the tblCreditContFactor table using the output from the tblBureauRiskCat decision table. ",
|
|
201
|
-
"finalValue": []
|
|
202
|
-
}
|
|
203
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"modelName": "DTLoanStrategyPredictive",
|
|
3
|
+
"modelDescription": "RASON Decision Table Example: Loan Strategy using a PMML predictive model inline: The difference between this example and the original DTLoanStrategy example is that this example expands on the DT Loan Strategy Model by adding an element to the formula, appRiskScore. The formula for appRiskScore returns the minimum of 2 outputs. The first output is produced from a linear regression model scoring new data contained in predictiveInput (within the data section). The second output is from the decision table, tblAppRiskScore, given the inputs: custAge (40), maritalStatus (single) and employmentStatus (selfemployed).",
|
|
4
|
+
"modelType": "calculation",
|
|
5
|
+
"decisionTables": {
|
|
6
|
+
"comment": "There are 8 decision tables in the decisionTables section. Outputs from some tables will be used as inputs for other tables.",
|
|
7
|
+
"tblAppRiskScore": {
|
|
8
|
+
"comment": "This decision table accepts 3 inputs, customer age, marital status and employment status, and returns a partial risk score. The collection of results will be added together to create the partial score. Note that the inputValues property limits the age to be 18 to 120, inclusive, the marital status to be s for single or m for married, the employment status as unemployed, employed, selfEmployed or student. A 40 yo single self employed person would be assigned a partialScore = 43 (rule 4) + 25 (rule 6) + 45 (rule 10) = 113.",
|
|
9
|
+
"inputs": [ "cust age", "marital status", "employment status" ],
|
|
10
|
+
"outputs": [ "partial score" ],
|
|
11
|
+
"refTypes": [ "", "", "", "" ],
|
|
12
|
+
"inputValues": [
|
|
13
|
+
[ "[18..120]", "s", "unemployed" ],
|
|
14
|
+
[ "", "m", "employed" ],
|
|
15
|
+
[ "", "", "selfemployed" ],
|
|
16
|
+
[ "", "", "student" ]
|
|
17
|
+
],
|
|
18
|
+
"rules": [
|
|
19
|
+
[ "[18..21]", "-", "-", 32 ],
|
|
20
|
+
[ "(21..25]", "-", "-", 35 ],
|
|
21
|
+
[ "(25..35]", "-", "-", 40 ],
|
|
22
|
+
[ "(35..49]", "-", "-", 43 ],
|
|
23
|
+
[ ">49", "-", "-", 48 ],
|
|
24
|
+
[ "-", "s", "-", 25 ],
|
|
25
|
+
[ "-", "m", "-", 45 ],
|
|
26
|
+
[ "-", "-", "unemployed", 15 ],
|
|
27
|
+
[ "-", "-", "student", 18 ],
|
|
28
|
+
[ "-", "-", "employed", 45 ],
|
|
29
|
+
[ "-", "-", "selfemployed", 36 ]
|
|
30
|
+
],
|
|
31
|
+
"hitPolicy": "C+"
|
|
32
|
+
},
|
|
33
|
+
"tblBureauRiskCat": {
|
|
34
|
+
"comment": "This decision table accepts 2 inputs, custExist (true if customer already has at least 1 more loans) and appRiskScore (partial score from tblAppRiskScore). With a hit policy of 'unique', only 1 rule, with a unique result, may be returned. ",
|
|
35
|
+
"inputs": [ "cust exist", "app risk score" ],
|
|
36
|
+
"outputs": [ "bureau risk cat" ],
|
|
37
|
+
"inputTypes": [ "", "" ],
|
|
38
|
+
"outputTypes": [ "" ],
|
|
39
|
+
"rules": [
|
|
40
|
+
[ false, "<100", "high" ],
|
|
41
|
+
[ false, "[100..120]", "medium" ],
|
|
42
|
+
[ false, "[120..130]", "low" ],
|
|
43
|
+
[ false, ">130", "veryLow" ],
|
|
44
|
+
[ true, "<80", "decline" ],
|
|
45
|
+
[ true, "[80..90]", "high" ],
|
|
46
|
+
[ true, "[90..110]", "medium" ],
|
|
47
|
+
[ true, ">110", "low" ]
|
|
48
|
+
],
|
|
49
|
+
"hitPolicy": "U"
|
|
50
|
+
},
|
|
51
|
+
"tblBureauCallType": {
|
|
52
|
+
"comment": "This decision table accepts 1 input, bureauRiskCat, which is the output of the tblBureauRiskCat decision table.",
|
|
53
|
+
"inputs": [ "bureau risk cat" ],
|
|
54
|
+
"outputs": [ "bureau call type" ],
|
|
55
|
+
"rules": [
|
|
56
|
+
[ "high, medium", "full" ],
|
|
57
|
+
[ "low", "mini" ],
|
|
58
|
+
[ "veryLow, decline", "none" ]
|
|
59
|
+
],
|
|
60
|
+
"hitPolicy": "U"
|
|
61
|
+
},
|
|
62
|
+
"tblEligibility": {
|
|
63
|
+
"comment": "This decision table accepts 3 inputs, bureauRiskCat (which is the output of the tblAppriskScore decision table), and the customer's age. The customer's eligibility will be returned in the result. Note that there are only two outputs: 'ineligible' or 'eligible' as given in the outputValues property.",
|
|
64
|
+
"inputs": [ "bureau risk cat", "bureau afford", "cust age" ],
|
|
65
|
+
"outputs": [ "eligibility" ],
|
|
66
|
+
"refTypes": [ "", "", "", "" ],
|
|
67
|
+
"outputValues": [ "ineligible", "eligible" ],
|
|
68
|
+
"rules": [
|
|
69
|
+
[ "decline", "-", "-", "ineligible" ],
|
|
70
|
+
[ "-", false, "-", "ineligible" ],
|
|
71
|
+
[ "-", "-", "<18", "ineligible" ],
|
|
72
|
+
[ "-", "-", "-", "eligible" ]
|
|
73
|
+
],
|
|
74
|
+
"hitPolicy": "P"
|
|
75
|
+
},
|
|
76
|
+
"tblStrategy": {
|
|
77
|
+
"comment": "This decision table accepts 2 inputs, eligibility and bureauCallType. The strategy will be returned in the result.",
|
|
78
|
+
"inputs": [ "eligibility", "bureau call type" ],
|
|
79
|
+
"outputs": [ "strategy" ],
|
|
80
|
+
"rules": [
|
|
81
|
+
[ "ineligible", "-", "decline" ],
|
|
82
|
+
[ "eligible", "full, mini", "bureau" ],
|
|
83
|
+
[ "eligible", "none", "through" ]
|
|
84
|
+
],
|
|
85
|
+
"hitPolicy": "U"
|
|
86
|
+
},
|
|
87
|
+
"tblCreditContFactor": {
|
|
88
|
+
"comment": "This decision table accepts 1 input, bureauRiskCat, and returns the creditContFactor.",
|
|
89
|
+
"inputs": [ "bureau risk cat" ],
|
|
90
|
+
"outputs": [ "credit cont factor" ],
|
|
91
|
+
"rules": [
|
|
92
|
+
[ "high, decline", 0.6 ],
|
|
93
|
+
[ "medium", 0.7 ],
|
|
94
|
+
[ "low, veryLow", 0.8 ]
|
|
95
|
+
],
|
|
96
|
+
"hitPolicy": "U"
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
"data": {
|
|
100
|
+
"comment": "The datasection contains the input parameters to the model, i.e. all input parameters are constants. This includes the predictive model, PredictivePMMLModel.",
|
|
101
|
+
"PredictivePMMLModel": {
|
|
102
|
+
"value": [ "<?xml version='1.0' encoding='utf-8'?>", "<PMML version='4.2' xsi:schemaLocation='http://www.dmg.org/PMML-4_2 http://www.dmg.org/v4-2/pmml-4-2.xsd' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns='http://www.dmg.org/PMML-4_2'>", "<Header copyright='Copyright (c) 2021 Frontline Systems Inc.' description='RegressionModel'>", "<Application name='XLMinerSDK' version='21.0.0.0'/>", "<Timestamp>2019-1-12 21:32:7</Timestamp>", "</Header>", "<DataDictionary numberOfFields='5'>", "<DataField optype='continuous' dataType='double' name='X1'/>", "<DataField optype='continuous' dataType='double' name='X2'/>", "<DataField optype='continuous' dataType='double' name='X3'/>", "<DataField optype='continuous' dataType='double' name='X4'/>", "<DataField optype='continuous' dataType='double' name='Score'/>", "</DataDictionary>", "<RegressionModel modelName='RegressionModel' functionName='regression' algorithmName='LinearRegression'>", "<MiningSchema>", "<MiningField name='Score' usageType='predicted'/>", "<MiningField name='X1' usageType='active'/>", "<MiningField name='X2' usageType='active'/>", "<MiningField name='X3' usageType='active'/>", "<MiningField name='X4' usageType='active'/>", "</MiningSchema>", "<Output>", "<OutputField optype='continuous' dataType='double' name='Predicted_Score' feature='predictedValue'/>", "</Output>", "<LocalTransformations/>", "<RegressionTable intercept='0'>", "<NumericPredictor name='X1' exponent='1' coefficient='-2.3617607737378745'/>", "<NumericPredictor name='X2' exponent='1' coefficient='1.4606586382766593'/>", "<NumericPredictor name='X3' exponent='1' coefficient='-1.0552806547103726'/>", "<NumericPredictor name='X4' exponent='1' coefficient='0.090913941664884437'/>", "</RegressionTable>", "</RegressionModel>", "</PMML>" ]
|
|
103
|
+
},
|
|
104
|
+
"PredictiveInput": {
|
|
105
|
+
"comment": "The data array, PredictveInput, contains the new data which will be scored by the predictive model, predictivePMMLModel (above). ",
|
|
106
|
+
"value": [
|
|
107
|
+
[ "X1", "X2", "X3", "X4" ],
|
|
108
|
+
[ 7, 26, 6, 60 ]
|
|
109
|
+
]
|
|
110
|
+
},
|
|
111
|
+
"custAge": {
|
|
112
|
+
"value": 40,
|
|
113
|
+
"comment": "Age of the prospective customer."
|
|
114
|
+
},
|
|
115
|
+
"maritalStatus": {
|
|
116
|
+
"value": "s",
|
|
117
|
+
"comment": "maritalst"
|
|
118
|
+
},
|
|
119
|
+
"employmentStatus": {
|
|
120
|
+
"value": "selfemployed",
|
|
121
|
+
"comment": "Employment Status for the prospective customer."
|
|
122
|
+
},
|
|
123
|
+
"custExist": {
|
|
124
|
+
"value": false,
|
|
125
|
+
"comment": "Does the customer have an existing loan? Only true or false is accepted."
|
|
126
|
+
},
|
|
127
|
+
"monthIncome": {
|
|
128
|
+
"value": 2500,
|
|
129
|
+
"comment": "Monthly income of the prospective customer."
|
|
130
|
+
},
|
|
131
|
+
"loanRate": {
|
|
132
|
+
"value": 5,
|
|
133
|
+
"comment": "Interest rate for the loan."
|
|
134
|
+
},
|
|
135
|
+
"loanTerm": {
|
|
136
|
+
"value": 30,
|
|
137
|
+
"comment": "Term length in months for the loan."
|
|
138
|
+
},
|
|
139
|
+
"loanAmnt": {
|
|
140
|
+
"value": 100000,
|
|
141
|
+
"comment": "This is the loan amount for the prospective loan."
|
|
142
|
+
},
|
|
143
|
+
"monthExpenses": {
|
|
144
|
+
"value": 1000,
|
|
145
|
+
"comment": "These are the monthly expenses for the prospective customer."
|
|
146
|
+
},
|
|
147
|
+
"loanType": {
|
|
148
|
+
"value": "standard",
|
|
149
|
+
"comment": "This is the loan type."
|
|
150
|
+
}
|
|
151
|
+
},
|
|
152
|
+
"formulas": {
|
|
153
|
+
"monthFee": {
|
|
154
|
+
"comment": "Calculate the decision tables within the 'formulas' section. Note the presence of the finalValue property to report the output value of each formula in the result. This is an optional property.",
|
|
155
|
+
"formula": "IF(loanType = 'standard', 20, IF(loanType = 'special', 25, 0))"
|
|
156
|
+
},
|
|
157
|
+
"monthRepay": {
|
|
158
|
+
"formula": "-PMT(loanRate%/12, loanTerm*12, loanAmnt)",
|
|
159
|
+
"comment": "Calculate the monthly loan payment."
|
|
160
|
+
},
|
|
161
|
+
"appRiskScore": {
|
|
162
|
+
"formula": "MIN(PsiPredict(PredictivePMMLModel,PredictiveInput),tblAppRiskScore(,,custAge, maritalStatus, employmentStatus))",
|
|
163
|
+
"comment": "Calls the tblAppRiskScore decision table to compute the applicant's risk score.",
|
|
164
|
+
"finalValue": []
|
|
165
|
+
},
|
|
166
|
+
"monthInstall": {
|
|
167
|
+
"formula": "monthRepay + monthFee",
|
|
168
|
+
"comment": "Total monthly installment."
|
|
169
|
+
},
|
|
170
|
+
"disposIncome": {
|
|
171
|
+
"formula": "monthIncome - ( monthRepay + monthExpenses)",
|
|
172
|
+
"comment": "Applicant's disposable income."
|
|
173
|
+
},
|
|
174
|
+
"bureauRiskCat": {
|
|
175
|
+
"formula": "tblBureauRiskCat(,,custExist, appRiskScore)",
|
|
176
|
+
"comment": "Calls the tblBureauRiskCat decision table. Note that output from the tblAppRiskScore decision table, appRiskScore, is an input to this decision table.",
|
|
177
|
+
"finalValue": []
|
|
178
|
+
},
|
|
179
|
+
"bureauCallType": {
|
|
180
|
+
"formula": "tblBureauCallType(,,bureauRiskCat)",
|
|
181
|
+
"comment": "Calls the tblBureauCallType decision table to compute the bureau's risk category.",
|
|
182
|
+
"finalValue": []
|
|
183
|
+
},
|
|
184
|
+
"bureauAfford": {
|
|
185
|
+
"formula": "IF(disposIncome * creditContFactor > monthInstall, TRUE, FALSE)",
|
|
186
|
+
"comment": "Determines if the applicant will be able to afford the monthly installment payment."
|
|
187
|
+
},
|
|
188
|
+
"eligibility": {
|
|
189
|
+
"formula": "tblEligibility(,,bureauRiskCat, bureauAfford, custAge)",
|
|
190
|
+
"comment": "Determines if the applicant is eligible to receive the loan.",
|
|
191
|
+
"finalValue": []
|
|
192
|
+
},
|
|
193
|
+
"strategy": {
|
|
194
|
+
"formula": "tblStrategy(,,eligibility, bureauCallType)",
|
|
195
|
+
"comment": "Uses outputs from the tblEligibility and tblBureauCallType tables to determine the best strategy for the applicant.",
|
|
196
|
+
"finalValue": []
|
|
197
|
+
},
|
|
198
|
+
"creditContFactor": {
|
|
199
|
+
"formula": "tblCreditContFactor(,,bureauRiskCat)",
|
|
200
|
+
"comment": "Calls the tblCreditContFactor table using the output from the tblBureauRiskCat decision table. ",
|
|
201
|
+
"finalValue": []
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
204
|
}
|