4. 决策表核心概念
在风控系统中,决策表并不是一张“画出来好看”的表格,而是一种把业务规则精确表达为可执行逻辑的结构化工具。要真正掌握决策表设计,必须先理解它的六个核心概念:条件桩、动作桩、条件项、动作项、规则、合并与冲突处理。这六个概念构成了决策表的“骨架”和“血肉”,也是后续章节中编写复杂风控规则的基础。
一、核心原理:决策表的四象限结构
一张标准决策表在结构上分为四个象限,分别对应“条件”和“动作”两个维度,以及“桩”和“项”两个层次。理解这个四象限结构,是理解所有后续概念的关键。
| 象限 | 名称 | 含义 | 风控示例 |
|---|---|---|---|
| 左上 | 条件桩 | 列出所有需要判断的条件名称 | 用户年龄、历史逾期次数、设备风险分 |
| 左下 | 动作桩 | 列出所有可能执行的动作名称 | 通过、人工审核、拒绝、二次验证 |
| 右上 | 条件项 | 每个条件在不同规则下的具体取值 | 年龄>=18、逾期次数>3、风险分<60 |
| 右下 | 动作项 | 每条规则命中后执行的具体动作 | 拒绝、人工审核、通过 |
其中,条件桩和动作桩是“静态定义”,描述系统中有哪些可判断的条件和可执行的动作;条件项和动作项是“动态组合”,描述在某一具体规则下条件取什么值、执行什么动作。一条完整的规则,就是“一组条件项 + 对应动作项”的组合。
核心记忆口诀:桩是名字,项是取值;条件决定是否命中,动作决定命中后做什么;一条规则 = 一个条件项组合 + 一个动作项组合。
二、方法流程:从条件桩到规则表的构建步骤
在实际风控项目中,构建决策表通常遵循以下流程:
- 识别条件桩:从业务规则中提取所有需要判断的维度,例如“是否实名”“近30天申请次数”“设备是否模拟器”。
- 识别动作桩:明确系统可以执行的动作集合,例如“通过”“拒绝”“转人工”“增加验证”。
- 枚举条件项:为每个条件定义可能的取值区间或布尔状态,例如“申请次数:0-2 / 3-5 / >5”。
- 组合规则:将条件项按业务逻辑组合成一条条规则,并指定对应的动作项。
- 检查合并与冲突:识别可以合并的规则,以及存在冲突的规则,并进行处理。
- 验证与落地:用真实或模拟数据验证规则覆盖率与准确性,再转化为代码或规则引擎配置。
下面是一个简化的风控决策表片段,用代码形式展示其结构:
条件桩:
C1: 年龄 >= 18
C2: 历史逾期次数 <= 2
C3: 设备风险分 < 60
动作桩:
A1: 通过
A2: 人工审核
A3: 拒绝
规则示例:
R1: C1=是, C2=是, C3=是 -> A1
R2: C1=是, C2=否, C3=是 -> A2
R3: C1=否, C2=-, C3=- -> A3
其中“-”表示该条件在当前规则中不关心取值,这为后续的规则合并提供了基础。
三、规则合并与冲突处理:决策表的“去重”与“排雷”
当条件桩和动作桩较多时,规则数量会迅速膨胀。例如3个布尔条件最多产生8条规则,10个条件则超过1000条。因此,规则合并是决策表设计中必须掌握的技能。
规则合并的核心思想是:如果两条规则的动作项相同,且只有一个条件的取值不同,其余条件取值相同,那么可以将该条件标记为“-”,合并为一条规则。例如:
合并前:
R1: C1=是, C2=是, C3=是 -> A1
R2: C1=是, C2=是, C3=否 -> A1
合并后:
R3: C1=是, C2=是, C3=- -> A1
合并可以显著减少规则数量,但必须注意:合并后的规则语义必须与合并前完全等价,不能因为“偷懒”而扩大或缩小规则覆盖范围。
冲突处理则是指当同一条规则或不同规则对同一组条件给出不同动作时,系统必须明确优先级。常见冲突类型包括:
- 条件重叠冲突:两条规则的条件项存在交集,但动作项不同。
- 动作矛盾冲突:同一条件下同时要求“通过”和“拒绝”。
- 优先级缺失冲突:规则未定义优先级,导致执行顺序不确定。
风控警示:冲突规则如果未被发现,可能导致同一用户在相同条件下被同时判定为“通过”和“拒绝”,轻则系统报错,重则造成资金损失。建议在规则上线前使用决策表分析工具进行冲突检测。
处理冲突的常用策略有三种:优先级覆盖(高优先级规则先执行)、条件互斥化(修改条件项使规则不重叠)、动作合并(将冲突动作合并为更保守的动作,如“拒绝”优先于“通过”)。
四、案例与复盘:一个真实风控场景的决策表设计
假设某信贷风控场景需要根据以下条件决定是否放款:
- 条件桩:C1 年龄是否≥18;C2 近半年逾期次数是否≤1;C3 是否命中黑名单。
- 动作桩:A1 通过;A2 人工审核;A3 拒绝。
初始规则表如下:
| 规则 | C1 年龄≥18 | C2 逾期≤1 | C3 黑名单 | 动作 |
|---|---|---|---|---|
| R1 | 是 | 是 | 否 | 通过 |
| R2 | 是 | 否 | 否 | 人工审核 |
| R3 | 是 | 是 | 是 | 拒绝 |
| R4 | 否 | - | - | 拒绝 |
复盘时发现两个问题:第一,R2和R3在“逾期≤1”和“黑名单”两个条件上存在潜在重叠,如果黑名单用户同时逾期≤1,R3应优先于R2执行;第二,R1和R2在C3=否时,可以进一步合并为“C1=是, C3=否”下根据C2分派动作,但动作不同,不能合并。最终通过增加优先级字段解决冲突:黑名单规则优先级最高,其次为逾期规则,最后为年龄规则。
实战建议:在决策表中显式增加“优先级”列,并规定“拒绝 > 人工审核 > 通过”的默认动作优先级。这样即使条件项出现重叠,系统也能按确定性顺序执行,避免冲突。
总结来看,条件桩和动作桩定义了决策表的边界,条件项和动作项填充了规则内容,规则是决策表的最小执行单元,而合并与冲突处理则决定了决策表是否精简、一致、可维护。掌握这六个概念,就掌握了风控决策表设计的核心语言。