基于业务规则的客户风险评分 – IBM ODM实现

通常的业务规则我们使用If then的形式来描述,而现实生活中的企业业务决策要复杂得多,一般由多个规则组成,而且其复杂性很难直接通过经典的基于rete的规则引擎利用其推理能力执行多个if then语句来解决。需要对规则流的设计,模型的建立,规则的层次结构有一个整体的考虑设计,以真正达到企业运营决策逻辑的敏捷变更的目的。

本文将使用一个金融行业常见的客户风险评分场景,来说明怎么利用业务规则技术(IBM ODM/JRules)实现复杂决策。

客户风险评分需求

所谓客户风险评分,就是根据客户信息使用特定的公式规则算法计算出用于标识客户风险级别的分值,在金融行业广泛的应用,如银行信用卡申请,个人或企业贷款审批。自动化的客户风险评分可以提高风险管理的及时性,确保评分决策的一致性,减少人工干预,进而实现业务流程自动化,降低运营成本。通常企业希望评分机制可以根据情况随时调整,包括评分参数,计算公式,风险因子等。如果使用代码方式或者数据库参数表的方式实现评分逻辑,其灵活性通常难以达到用户的期望。

一个客户的具体风险评分需求如下:

1. 准入规则

- 申请人的年龄比如大于18岁,小于60岁

- 申请的金额不得超过1,000,000

- 申请人必须有正当职业,不接受无业者的申请

2. 评分规则

以下表格是客户风控部门设定的评分标准的一个子集,实际的评分模型当然远远比示例复杂,某些因子之间有关联关系,其权重或者风险分值也可能相互影响。

风险要素 权重 缺省分值 风险要素取值范围 风险要素分值
Age 10% 10 < =25 75
      26 - 30 30
      31 - 45 10
      > =46 50
Gender 5% 20 Male 100
      Female 50
Education Level 15% 20 High School 80
      Associate Degree 50
      Bachelor Degree 20
      Master Degree 20
      Doctor Degree 50
Employment Type 10% 20 Employed 20
      Self Employed 50
Corporate Type 10% 30 Top 1000 Corporations 10
      State Owned Corporations 20
      Others 30
Business Nature 5% 20 Investment
80 - Employed

100 - Self Employed

      Banking
60 - Employed

100 - Self Employed

      Consultancy
50 - Employed

100 - Self Employed

      Agriculture
30 - Employed

50 - Self Employed

      Construction
30 - Employed

50 - Self Employed

      Education
10 - Employed

30 - Self Employed

      Others
10 - Employed

20 - Self Employed

Monthly Income 20% 20 <=5000 80
      5000 - 10000 40
      10000 - 40000 20
      >=40000 60
Position In Company 15% 20 Sole Proprietor 80
      Top Management 60
      Manager 40
      Professional 20
      Contractual 50
      Others 10
Months Of Employment 10% 20 0-12 100
      12-36 60
      36-60 20
      >=60 10
         
         

至于这个评分标准是如何出来的呢?通常有两种基本途径:

1)根据金融机构风控业务专家的经验,确定要素及其权重分值

2)通过对大量历史数据的统计分析,发掘出用户行为模式,由此关联到特定风险要素,

具体做法不是本文讨论的重点。

3. 分级规则

根据风险分值进行分级,确定应该采取的动作,供后续系统或人员参考。

分值 风险级别 动作
<=30 low risk customer Accept
31 - 50 Medium risk customer Accept
51 - 80 High risk customer Review
>80 Very high risk customer Reject

总体而言,客户希望可以灵活添加更多的准入规则,增加删除风险要素,修改各要素的权重及分值,调整分级策略。

模型设计

在ODM/JRules中,规则模型包含两层,执行对象模型(eXecution Object Model)和业务对象模型(Business Object Model),XOM的设计类似于Java对象模型的设计,

针对上述需求,我们设计如下简单的对象模型

由于风险要素需要动态添加,我们定义RiskFactor类型,包含名称,权重,缺省值等属性,Result中使用list存储运行时创建的风险要素。常我们会在XOM中定义一些操作,用来描述比较技术化的逻辑,例如Result中的addRiskFactor方法会创建RiskFactor对象并加入列表,这样可以避免将不必要的复杂性暴露到规则层面。

接下来,利用规则设计器生成BOM,词汇化模型中相应的属性和操作,并将Application和Result分别指定为决策服务规则集的输入输出参数。

规则设计与实现

规则设计一般从规则流开始。规则流是现在规则管理系统中一个基本组件,把决策流程以图形化可理解的方式展现出来,并在执行期帮助规则引擎更合理的控制规则执行,

有人可能会问,规则引擎不是可以根据规则和事实进行推导吗?为什么需要显式的指定其执行顺序?事实上目前的企业应用中,很少完全利用规则引擎的推导能力来做出决策,业务决策通常是可解释的,当规则业务含义层面的前后依赖关系非常明显,我们就可以使用规则流来显式定义其执行顺序,这也可以帮助业务人员/开发人员更好的理解决策的流程,从性能的角度规则引擎只选择一部分规则执行。

根据前面的需求描述,我们设计如下的规则流来描述决策流程:

1)首先是准入资格的检查,即根据用户信息进行筛选,如果用户不符合准入资格,规则流将直接退出

2)第二步进行评分,使用了一个Subflow,包含Definition和Scoring两个步骤。

3)最后根据用户风险分值进行分级。

每个规则任务中均引用了一部分规则,当规则任务执行时,规则引擎将使用规则集输入参数或Working memory中的事实数据验证该部分规则。

下面我们来具体看看规则的设计。据准入检查的要求,Eligibility规则主要检查用户数据,相互独立,如果申请人违反了任何一条准入规则,结果中的qualified标识将被设置为false。反之,如果没有任何准入规则被触发,规则流将进入风险评分流,否则直接退出。

根针对用户年龄的规则如下:

我们也可以随意增加其他的规则,例如

缺省情况下,所有的Eligibility规则都会验证。一个常见的需求是,只要有一条规则被触发,即意味着该客户不符合准入资格,规则任务立即退出无需执行其他规则,此类需求可以通过设定该规则任务的Exit Criteria为RuleInstance实现。

接下来在评分子规则流中,Definition任务的目的是在评分之前实例化必要的风险因素,设定相关参数,如Name,Weight等,并将风险要素加入到Result对象中。

请注意这个决策表中所有的规则都将被规则引擎执行,示例中的condition列仅作为开关之用(ODM/JRules要求决策表必须有条件列)。这种参数化决策表是规则设计中常见的做法,可以让用户灵活添加新的风险要素。

下一步Scoring任务的目的则是将风险因素与用户数据进行规则匹配,确定其分值。我们首先利用Scoring任务的Initial Action将definition阶段定义的风险要素加入Working Momory

在评分决策表中,我们使用预定义变量通过唯一的名称来绑定Working memory中对应的风险因素对象,Age评分所使用的预定义变量和决策表如下所示:

其他风险要素的评分可用类似决策表定义,如教育程度:

我们也可以使用决策表表示更复杂的打分逻辑,如组合多个用户属性:

Scoring任务执行完规则后后,使用Final Action对各个风险因素的评分进行汇总:

最后我们根据风险评分结果进行简单的分级,依然应用决策表实现。

当然我们可以结合用户申请中的其他信息,比如金额,产品等定义更为复杂的个性化的分级策略。

总结

使用业务规则技术实现复杂决策的关键是:

1)建立适合规则处理的灵活的领域模型

2)用规则流准确描述决策的逻辑步骤

3)合理使用规则,暴露/隐藏合适的参数逻辑

注:本文也发表于http://decisionrule.com/zh/2014/07/riskscoring,  转载请注明出处。

时间: 2024-10-07 02:36:03

基于业务规则的客户风险评分 – IBM ODM实现的相关文章

XAF 如何基于业务规则禁用属性

// Developer Express Code Central Example: // How to: Disable Property Editors Based on a Business Rule // // This example demonstrates how to hide and disable property editors via the // Conditional Appearance module (the obsolete Conditional Editor

基于RulesEngine的业务规则实现

规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策.接受数据输入,解释业务规则,并根据业务规则做出业务决策.比较常见的业务规则引擎有Drools.VisualRules 和iLog.这里介绍另外一个C#开源工具RulesEngine.下面通过一个例子来他如何使用. 1 项目结构 在RulesEngine源代码中添加一个RulesEngineDemo的窗体应用程序,然后引用需要的类库,如下图所示: 2 订单等实体类

基于NXBRE规则引擎实现的柔性折扣策略

规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策.接受数据输入,解释业务规则,并根据业务规则做出业务决策.应用背景: 企业级管理者对企业IT系统的开发有着如下的要求: 1. 为提高效率,管理流程必须自动化,即使现代商业规则异常复杂. 2. 市场要求业务规则经常变化,IT系统必须依据业务规则的变化快速.低成本的更新. 3. 为了快速.低成本的更新,业务人员应能直接管理IT系统中的规则,不需要程序开发人员参与. 下

业务规则引擎浅析

在CRM(客户关系管理)系统或者其他业务支撑型系统的开发过程中,最经常多变的就是复杂的业务规则.因为这些规则要迎合.顺应市场的变化,如何能有效到做到业务规则和整体的系统支撑架构解耦分离,这个是开发过程中必须考虑的一个问题.每当客户要求改变一个业务规则的时候,我们又如何能做到在最短的时间内完成需求的开发提交,提高系统的灵活度?业务规则引擎无非是一个比较好的解决方案.它把复杂.冗余的业务规则同整个支撑系统分离开,做到架构的可复用移植,这个就是我们的终极目标. 那规则引擎又是什么东西?严格来说,它是一

Ckrule业务规则管理系统简介

1.   简述 Ckrule业务规则管理系统(BRMS)是一个集成的应用程序存储.管理.执行和测试的平台,允许组织定义.部署.监控和维护运营系统使用的各种复杂决策逻辑.Ckrule BRMS 独立于核心应用程序代码提取并管理决策逻辑,以便可以跨整个组织轻松理解.维护和重用这些决策逻辑. Ckrule BRMS由下图4个部分组成: 各部分功能明细如下: 一级功能 二级功能 说明 规则存储 -- 存储库允许规则置于核心应用程序代码之外.它还允许将决策逻辑作为一项企业资产管理,从而支持更轻松地理解和更

DDD - 业务规则

1. Business rules are an important part of the business domain. They define data validation and other constraints that need to be applied on domain objects in specific business process scenarios. Business rules typically fall into the following categ

BizTalk动手实验(九)业务规则引擎使用

1 课程简介 通过本课程熟悉业务规则引擎(BRE)的使用(本环境为Windows 2008 32位操作系统环境 + Visual Studio 2010 + BizTalk 210) 2 准备工作 1. 熟悉BizTalk Schema,Orchestration相关开发技术 3 演示 1. 创建BizTalk项目 2. 新建Schema,新建product(string类型),quantity(int类型),price(double类型)个字段,如下图所示 3. 创建Orchestration

SpringBoot2 整合 Drools规则引擎,实现高效的业务规则

本文源码:GitHub·点这里 || GitEE·点这里 一.Drools引擎简介 1.基础简介 Drools是一个基于java的规则引擎,开源的,可以将复杂多变的规则从硬编码中解放出来,以规则脚本的形式存放在文件中,使得规则的变更不需要修正代码重启机器就可以立即在线上环境生效.具有易于访问企业策略.易于调整以及易于管理的特点,作为开源业务规则引擎,符合业内标准,速度快.效率高. 2.规则语法 (1).演示drl文件格式 package droolRule ; import org.slf4j.

基于业务类通讯的Http系统之概述

基于业务类通讯的Http系统,只要由Http Server和Http Client组成.该系列讨论的是基于Delphi的实现方式,其实是可以拓展到其它语言平台上面去的.有兴趣的朋友可以尝试一下.在Delphi中,服务端可以直接使用TIdHttpServer,客户端则直接使用TIdHttp就能够完成通讯的过程.是的,就是这个简单,仅仅这两个控件就构成了一个业务量可以很庞大的业务系统.由于Http都是无状态的,直接由客户端请求服务端,再由服务端给客户端返回相关内容.此时如果不是长连接,会直接断开服务