3. 决策表入门

决策表入门 学习卡片

在风控系统中,规则一旦超过三五个条件,用 if-else 堆叠就会迅速失控:分支嵌套深、遗漏组合、修改时牵一发动全身。决策表(Decision Table)正是为解决这类“多条件组合决策”而生的结构化工具。它把复杂的条件逻辑压缩成一张二维表格,让业务、产品、开发和测试能在同一张表上对齐认知。

一、决策表的定义与组成要素

决策表是一种以表格形式表达“条件组合 → 动作结果”的决策模型。它的核心思想是:把所有影响决策的条件列出来,穷举或合并它们的取值组合,再为每种组合指定应执行的动作。一张标准决策表由四个象限组成:

  • 条件桩(Condition Stub):左上区,列出所有参与判断的条件名称,如“用户年龄”“历史逾期次数”“设备风险分”。
  • 条件项(Condition Entry):右上区,列出每个条件在各规则下的取值,通常用 Y/N 或具体值表示。
  • 动作桩(Action Stub):左下区,列出所有可能的决策动作,如“通过”“人工审核”“拒绝”“二次验证”。
  • 动作项(Action Entry):右下区,用 X 或 ✓ 标记某条规则下要执行哪些动作。

此外,每条纵向的列称为一条“规则(Rule)”,代表一种条件组合及其对应动作。规则数量由条件取值数决定:若 3 个条件各有 2 种取值,理论组合数为 2³=8 条规则。

核心公式:规则总数 = 条件1取值数 × 条件2取值数 × … × 条件n取值数。当条件较多时,需通过“合并等价规则”和“使用无关项(—)”来压缩表规模。

二、条件与动作的表达方法

决策表的可读性取决于条件项和动作项的写法。常见约定如下:

符号 含义 示例
Y 条件成立 年龄 ≥ 18
N 条件不成立 年龄 < 18
— 无关项,该条件不影响本规则 设备分高低均可
X / ✓ 该规则下执行此动作 拒绝申请
1,2,3 条件的具体枚举值 风险等级=高

下面是一张简化的风控决策表,用于判断是否放款:

条件桩                规则1  规则2  规则3  规则4
信用分 ≥ 700          Y      Y      N      N
历史逾期次数 = 0      Y      N      Y      N
─────────────────────────────────────────────
动作桩                规则1  规则2  规则3  规则4
直接放款              X      —      —      —
人工审核              —      X      X      —
拒绝放款              —      —      —      X

规则1表示信用分高且无逾期,直接放款;规则2、3进入人工审核;规则4直接拒绝。可以看到,决策表把“什么条件下做什么”表达得非常紧凑。

三、决策表与决策树的对比及适用场景

决策表和决策树是风控中两种最常见的规则表达方式,它们并非互斥,而是各有擅长。决策树以树形分支展开,适合条件有先后顺序、逐层收窄的场景;决策表以二维矩阵展开,适合条件之间相对独立、需要穷举组合的场景。

对比维度 决策表 决策树
结构形式 二维表格,条件与规则交叉 树形分支,逐层判断
组合覆盖 显式穷举,易发现遗漏 隐式覆盖,深层分支易被忽略
条件顺序 不强调顺序,条件并列 强调顺序,先判断根节点
可维护性 增删条件需调整整表 局部增删分支较灵活
适用场景 条件组合有限、需审计全覆盖 条件有优先级、需快速分流

选择建议:当条件数 ≤ 4 且组合需要严格审计时,优先用决策表;当条件存在明显优先级(如先查黑名单再查信用分)时,用决策树更自然。实际项目中,常先用决策树做粗筛,再用决策表做精细组合判断。

四、常见误区与复盘

初学者使用决策表时,最容易踩以下三个坑:

  1. 条件项取值不完整。例如只写了“信用分高/低”,却漏掉“信用分缺失”这一情况,导致线上出现未定义行为。复盘方法:对每个条件列出所有可能取值,包括异常值和空值。
  2. 规则冲突未检测。两条规则条件项相同但动作项不同,系统执行时结果不确定。复盘方法:在表完成后做一次“同条件项扫描”,确保没有重复列。
  3. 无关项滥用。为了压缩表格,把本应区分的条件标成“—”,导致规则语义模糊。复盘方法:每使用一个“—”,都要问“这个条件真的不影响动作吗?”

关键提醒:决策表不是写完就结束的文档,而是需要和测试用例一一对应的“可执行规格”。建议每条规则至少对应一个测试用例,规则覆盖率达到 100% 才算合格。