作为业务分析师或业务规则开发人员,您可以通过将PMML文件与决策模型和表示法(DMN)模型结合使用,将机器学习(ML)与Together规则引擎集成。本文档的这一部分专门重点介绍一个使用DMN和PMML的实用示例。
可执行AI简介
当您想到人工智能(AI)时,可能会想到机器学习和大数据。但机器学习只是其中的一部分。人工智能包括以下技术:
● 机器人技术:技术、科学和工程的整合,生产出可以执行人类执行的物理任务的机器
● 机器学习:一组算法在暴露于数据时无需明确编程即可学习或改进的能力
● 自然语言处理:处理人类语音的机器学习子集
● 数学优化:使用条件和约束来找到问题的最佳解决方案
● 数字决策:使用定义的标准、条件以及一系列机器和人工任务来做出决策

虽然科幻小说中充斥着所谓的通用人工智能(AGI),即性能优于人类且无法与人类区分开来并且在没有人工干预或控制的情况下学习和进化的机器,但AGI还需要几十年的时间。与此同时,我们拥有实用的AI,它对今天的我们来说不那么可怕,也更有用。可执行AI是AI技术的集合,当它们结合在一起时,可以为预测客户行为、提供自动化客户服务和帮助客户做出购买决策等问题提供解决方案。
领先的行业分析师报告称,以前的组织一直在努力使用AI技术,因为他们投资于AI的潜力,而不是AI今天可以提供的现实。AI项目没有生产力,因此对AI的投资放缓,AI项目的预算减少。这种对AI的幻灭通常被称为AI冬天。AI经历了几个AI冬天和AI春天的周期,我们现在显然处于AI春天。企业正在看到AI可以提供的实际现实。可执行意味着操作和执行。可执行的AI方法会考虑当今可用的AI技术,在有用的地方将它们结合起来,并在需要时增加人工干预,为现实世界的问题创建解决方案。
可执行AI解决方案示例
实用AI的一个应用是客户支持。客户提交报告问题(例如登录错误)的支持票证。将机器学习算法应用于工单,以根据关键字或自然语言处理(NLP)将工单内容与现有解决方案相匹配。关键字可能会出现在许多解决方案中,有些相关,有些则不相关。您可以使用数字决策来确定要向客户展示哪些解决方案。但是,有时算法建议的任何解决方案都不适合向客户建议。这可能是因为所有解决方案的置信度得分较低,或者多个解决方案的置信度得分较高。在找不到合适的解决方案的情况下,数字决策可以涉及人工支持团队。为了根据可用性和专业知识找到最佳支持人员,数学优化通过考虑员工排班限制来选择支持票证的最佳分配对象。
如示例所示,您可以结合机器学习从数据分析和数字决策中提取信息,以对人类知识和经验进行建模。然后,您可以应用数学优化来安排人工协助。这是一种可应用于其他情况的模式,例如,信用卡争议和信用卡欺诈检测。

这些技术使用四个行业标准:
● 案例管理模型和表示法(CMMN)
CMMN用于对工作方法进行建模,这些工作方法包括各种活动,这些活动可能会根据情况以不可预测的顺序执行。CMMN模型以事件为中心。CMMN通过支持结构化程度较低的工作任务和由人工驱动的任务,克服了可以使用BPMN2建模的局限性。通过结合BPMN和CMMN,您可以创建功能更强大的模型。
● 业务流程模型和符号(BPMN2)
BPMN2规范是一个对象管理组(OMG)规范,它定义了以图形方式表示业务流程的标准,定义了元素的执行语义,并以XML格式提供流程定义。BPMN2可以对计算机和人工任务进行建模。
● 决策模型和符号(DMN)
决策模型和符号(DMN)是OMG建立的标准,用于描述和建模运营决策。DMN定义了一个XML架构,该架构支持在符合DMN的平台之间和跨组织共享DMN模型,以便业务分析师和业务规则开发人员可以协作设计和实施DMN决策服务。DMN标准类似于业务流程模型和表示法(BPMN)标准,并且可以与业务流程设计和建模标准一起使用。
● 预测模型标记语言(PMML)
PMML是用于表示预测模型的语言,预测模型是使用统计技术在大量数据中发现或学习模式的数学模型。预测模型使用它们学习的模式来预测新数据中模式的存在。借助PMML,您可以在应用程序之间共享预测模型。此数据将导出为DMN模型可以使用的PMML文件。随着机器学习框架继续训练模型,更新的数据可以保存到现有的PMML文件中。这意味着您可以使用由任何可以将模型另存为PMML文件的应用程序创建的预测模型。因此,DMN和PMML集成良好。

此图显示了预测性决策自动化的工作原理。
1. 业务数据进入系统,例如,来自贷款申请的数据。
2. 与预测模型集成的决策模型决定是否批准贷款或是否需要其他任务。
3. 例如,将业务作结果发送给客户拒绝信或贷款报价。
下一节将演示预测性决策自动化如何与Together规则引擎配合使用。
信用卡欺诈争议使用案例示例
金融行业在多个领域使用可执行的AI进行决策。一个领域是信用卡收费争议。当客户发现信用卡账单上的收费不正确或无法识别时,客户可以对收费提出异议。在某些情况下,信用卡欺诈检测需要人工干预,但大多数报告的信用卡欺诈可以通过可执行的AI完全或部分解决。
此示例是关于虚构的FortressBank、该银行的客户Joe和业务流程管理(BPM)开发人员Michelle的。首先,我们将了解该银行最初是如何通过Together规则引擎数字决策使用AI的,然后我们将了解Michelle如何使用从机器学习创建的预测模型标记语言(PMML)模型来增强决策模型。
Tensorflow™和R™等机器学习模型会生成预测模型。您可以将这些预测模型保存在PMML等开放标准中,以便可以将模型与Together规则引擎或其他支持PMML标准的产品一起使用。
Together规则引擎和OpenShift
FortressBank使用Together规则引擎和OpenShift来开发和运行FortressBank决策服务。OpenShift是一个云平台,用于在Kubernetes之上开发和运行容器化应用程序。它旨在使应用程序和支持它们的数据中心能够从几台计算机和应用程序扩展到为数百万客户提供服务的数千台计算机。您可以将Together规则引擎用作创建云原生决策服务、业务自动化应用程序和微服务的平台。在这种情况下,Together规则引擎使企业业务和IT用户能够记录、模拟、管理、自动化和监控业务流程和决策。
使用Together规则引擎进行信用卡争议数字决策
Joe是FortressBank的客户。每个月,他都会登录FortressBank网站,在支付账单之前查看账单上的所有费用。本月,Joe看到一笔他认可但金额不正确的交易。供应商向他收取了44.50美元而不是4.50美元。Joe选择包含错误项目的行,然后单击Dispute(争议)。

此作会引发一系列有关争议的问题:
1. 您为什么对这些交易提出异议?
2. 您的卡是否一直随身携带?
3. 关于这次争议,您还有什么想告诉我们的吗?
在Joe回答问题后,网站会向Joe提供事件编号。FR-00000004
FortressBank现在必须决定是否在不进行人工调查的情况下偿还有争议的金额,或者是否手动调查索赔。人工调查需要更多的资源,因此自动处理有争议的金额会给银行带来更少的人力资源成本。但是,如果银行自动接受所有有争议的金额,那么由于为欺诈性索赔支付的钱,银行最终会付出更大的代价。必须有人或某事决定是否进行调查。
信用卡争议项目
为了帮助做出此决策,FortressBank创建了 CreditCardDisputeCase 项目,其中包含对争议流程进行建模的 fraudDispute 业务流程。

过程变量
当Joe报告争议时,会创建一个具有案例ID的fraudDispute流程实例的ProcessVariables选项卡包含特定于Joe帐户的多个变量和值,包括、(信用卡持有人风险评级)和(此争议的风险评级):
FR-00000004CaseIDcaseFile_cardholderRiskRatingcaseFile_disputeRiskRating

该表还包含值为.这表明争议符合自动处理的条件。casefile_automatedtrue
流程图
图表选项卡包含BPMN图,该图显示了银行在决定是自动还是手动处理争议时使用的决策路径:

决策任务包含的规则用于确定争议是否会自动退回到Joe的账户(里程碑1)或是否需要根据和变量的值进行更多调查(里程碑2)。如果Joe的争议符合自动批准的标准,则遵循里程碑1,争议金额将退回到他的账户。这个子流程非常精简和高效。如果Joe的争议需要人工评估,则会启动里程碑2 中的子流程,这将需要一些人工参与者的参与,并且需要更多资源来处理。
caseFile_cardholderRiskRatingcaseFile_disputeRiskRating
在这种情况下,决策任务决定自动处理Joe的争议,因此它遵循里程碑1:自动退款。
DMN模型
以下简化的DMN模型显示了作为 fraudDispute 决策任务任务一部分的决策流程:

输入变量包括 Age (年龄)(持卡人年龄)、IncidentCount (事件计数)(此持卡人之前的争议数量)、持卡人状态 (standard,silver,gold,platinum)和 FraudAmount(欺诈金额)。
Together规则引擎使用决策表中的输入变量来支持数字决策。决策表由人工业务分析师创建。分析师创建业务需求分析文档或电子表格草稿,供利益相关者审查和批准。然后,项目设计人员使用Together规则引擎编辑器将分析文档中的数据传输到DMN模型。FortressBank 信用卡争议流程有两个决策表,即 CardholderRiskRating(持卡人风险评级)表和 DisputeRiskRating(争议风险评级)表。CardholderRiskRating 表包含三个输入变量:IncidentCount(事件计数)、CardholderStatus(持卡人状态)和 Age(年龄)。争议风险评级表包含 CardholderStatus 输入变量。该表根据持卡人身份和争议金额计算争议的风险。

● 持卡人风险评级
Joe是25岁以上的银卡持卡人。他之前有过两次以上的争议,因此他的风险评级为2。如果Joe之前没有争议,则他的风险评级为0。
● 争议风险评级
由于Joe是银卡持卡人,争议金额为40美元,因此Joe在争议风险评级表中的评级为1。如果有争议的金额为140美元,则Joe的风险评级为2。
以下公式作为 DMN模型中的ProcessAutomatically 最终决策的一部分实施,它使用两个决策表中的分数来确定是自动对争议金额进行退款(里程碑1)还是需要更多调查(里程碑2)。
(CardholderRiskRating+DisputeRiskRating)<5
如果Joe的总体风险评分低于5,则会自动向他收取有争议的金额(里程碑1)。如果总分是5分或更高,则他的争议将被手动处理(里程碑2)。
将机器学习添加到Together规则引擎数字决策中
由于FortressBank拥有有关其客户的历史数据,包括以前的交易和争议历史记录,因此该银行可以将这些数据与机器学习结合使用,以创建可用于DMN模型决策任务的预测模型。与业务分析师创建的决策表相比,这可以更准确地评估风险。
FortressBank有两组PMML文件,其中包含更准确地评估风险预测的模型。一组基于线性回归算法,另一组基于随机森林算法。

线性回归是统计和机器学习中使用最广泛的算法之一。它使用一个线性方程式,该方程式结合了一组数值输入和输出值。随机森林使用许多决策树作为输入来创建预测模型。
添加PMML文件
Michelle将dispute_risk_linear_regressionPMML文件导入到她的项目中。她将CardholderRiskModel业务模型知识节点添加到DMN模型,并将dispute_risk_linear_regressionPMML文件与该节点相关联。Together规则引擎分析PMML文件并将输入参数添加到节点。Michelle将CardholderRiskModel节点与DisputeRiskRating.
然后,Michelle将credit_card_holder_risk_linear_regressionPMML模型添加到项目中,创建DisputeRiskModel模式DMN文件,创建credit_card_holder_risk_linear_regressionPMML文件并将其与节点相关联。Together规则引擎分析PMML文件并将输入参数添加到节点。
下图是Michelle完成的DMN模型,该模型将分析决策表替换为PMML文件中的预测模型:

Michelle现在返回到 fraudDispute BPMN模型,并使用她添加的PMML文件更新模型。然后,她重新部署了该项目。
提高分数精度
在这个新场景中,Michelle使用PMML模型重新部署了FortressBank项目,我们可以看到当Joe登录到他的FortressBank账户并报告相同的交易不正确时会发生什么。此时,Michelle导航到ProcessInstances窗口,她看到了Joe的新争议实例。在ProcessVariables选项卡中,Michelle查看cardHolderRiskRating和disputeRiskRating的值。它们已更改,因为模型现在正在使用PMML文件。这通过使用基于历史数据的机器学习模型提供了更精确的风险预测。同时,银行的政策仍然由DMN决策模型执行:风险预测器低于允许自动处理此争议的指定阈值。

监测
最后,FortressBank使用Prometheus收集有关信用卡争议的指标,并使用Grafana实时可视化这些指标。监视器的上半部分显示业务指标关键绩效指标(KPI),下半部分显示运营指标KPI。

将PMML模型与DMN模型结合使用来解决信用卡交易争议
此示例说明如何使用Together规则引擎创建一个DMN模型,该模型使用PMML模型来解决信用卡交易争议。当客户对信用卡交易提出争议时,系统会决定是否自动处理该交易。
先决条件
PMML评估库,已经作为Together规则引擎的一部分,提供PMML文件执行功能,在运行DMN模型时可无缝的调用执行PMML模型方法。
程序
1. 使用 CreditcardtransactiondisputeexercisePMML文件中的XML示例的内容创建文件。dtree_risk_predictor.pmml
2. 将文件添加到KJAR项目的中。dtree_risk_predictor.pmml.com
3. 在KJAR项目的 com 包中创建争议事务检查 DMN模型。
4. 使用TogetherDMN编辑器,创建 tTransaction 自定义数据类型:

a. 单击 DataTypes 选项卡。
b. 单击 AddacustomDataType。
c. 在 Name(名称)框中,输入。tTransaction
d. 从 Type 菜单中选择 Structure。
e. 要创建数据类型,请单击复选标记。
t.Transaction 自定义数据类型显示一个变量行。
f. 在变量行的 Name 字段中,输入,从 Type 菜单中选择 Number,然后单击复选标记。transaction_amount
g. 要添加新的变量行,请单击该行上的加号。此时将显示一个新行。transaction_amount
h. 在 Name 字段中,输入,从 Type 菜单中选择 Number,然后单击复选标记。cardholder_identifier
5.添加RiskPredictor模型:dtree_risk_predictor.pmml

a. 在DMN编辑器的 IncludedModels 窗口中,单击 IncludeModel 。
b. 在 IncludeModel 对话框中,从 Models 菜单中进行选择。dtree_risk_predictor.pmml
c. 在 Provideauniquename(提供唯一名称)框中输入,然后单击 OK(确定)。RiskPredictor
6.使用RiskPredictor和 DecisionTreeClassifier 模型创建 RiskPredictor 业务知识模型(BKM)节点:

a在DMN编辑器的 Model(模型)窗口中,将BKM节点拖动到DMN编辑器画板中。

b.将节点重命名为RiskPredictor。
c.单击位于节点左侧垃圾桶图标下方的编辑图标。

d.单击RiskPredictor框中的F,然后从SelectFunctionKind菜单中选择PMML。F变为P。
e.双击FirstselectPMMLdocument框,然后选择RiskPredictor。
f.双击SecondselectPMMLmodel框,然后选择DecisionTreeClassifier。
g.要返回到DMN编辑器画板,请单击BacktoDisputeTransactionCheck。
7.创建数据类型为 tTransaction 的 Transaction inputdata节点:

a.在DMN编辑器的Model(模型)窗口中,将输入数据节点拖动到DMN编辑器画板中。

b.将节点重命名为Transaction。
c.选择节点,然后单击窗口右上角的properties铅笔图标。
d.在Properties(属性)面板中,选择InformationItem→Datatype→tTransaction,然后关闭面板。
8.创建TransactionDisputeRisk决策节点,并添加用于数据输入的Transaction节点和函数的RiskPredictor节点:

a.在DMN编辑器的 Model(模型)窗口中,将决策数据节点拖动到DMN编辑器调色板中。

b.将节点重命名为TransactionDisputeRisk。
c.选择 RiskPredictor 节点,然后将箭头从节点右上角拖动到 TransactionDisputeRisk 节点。
d.选择 Transaction(交易)节点,然后将节点右下角的箭头拖动到 TransactionDisputeRisk(交易争议风险)节点。
9.在TransactionDisputeRisk节点中,创建Riskpredictor调用函数:

a. 选择 TransactionDisputeRisk 节点,然后单击节点左侧的编辑图标。
b. 单击 Selectexpression 并从菜单中选择 Invocation。
c. 在 Enterfunction(输入函数)框中输入 RiskPredictor。
d. 单击 P1。
e. 在 EditParameter 对话框中,在 Name 框中输入number,从 DataType 菜单中选择 number,然后按Enter键。amount
f. 单击 Selectexpression,然后从菜单中选择 Literalexpression。
g. 在 amount 旁边的框中输入。Transaction.transaction_amount
h. 右键单击 1 并选择下面的Insert(插入)。此时将打开 EditParameter 对话框。
i. 输入 holder_index 在 姓名: 框,选择 数字 来自 数据类型 菜单,然后按输入键。
j. 单击第 2 行的 Selectexpression,然后从菜单中选择 Literalexpression。
k. 在 amount 旁边的框中输入。Transaction.cardholder_identifier
10.创建数据类型编号为RiskThresholdinputdata节点:

a. 在DMN编辑器的 Model(模型)窗口中,将输入数据节点拖动到DMN编辑器画板中。
b. 将节点重命名为RiskThreshold。
c. 选择节点,然后单击窗口右上角的properties铅笔图标。
d. 在 Properties(属性)面板中,选择 InformationItem→Datatype→number(数据类型),然后关闭面板。
11.创建Canbeautomaticallyprocessing?决策节点,该节点将TransactionDisputeRisk和Riskthreshold节点作为输入:

a.将决策节点拖动到DMN编辑器调色板中,并将其重命名为Canbeautomaticallyprocessing。
b.选择节点,然后单击节点左上角的编辑图标。
c.单击Selectexpression,然后从菜单中选择Literalexpression。
d.在框中输入。TransactionDisputeRisk.predicted_dispute_risk<RiskThreshold
e.选择TransactionDisputeRisk节点,然后将节点左上角的箭头拖动到Canbeautomaticallyprocessing节点。
f.选择RiskThreshold节点,然后将箭头从节点左下角拖动到Canbeautomaticallyprocessing节点。
12.保存模型并构建项目:
a.在DMN编辑器中,单击Save(保存)。
b.如有必要,请更正出现的任何错误。
c.要返回项目窗口,请单击痕迹导航跟踪中的CreditCardDispute。
d.单击Build(构建)。项目应该成功构建。
13.运行测试:

