一条风控规则的完整一生——该不该写、怎么管、什么时候该删
风险科技 2026年9月21日 · 预计阅读 15 分钟
本文由 AI 辅助创作,数学推导与方法框架由作者完成。
(本篇为技术原理型文章,不含任何真实业务数据实验。文中公式为自洽推导,用于说明原理,不构成授信政策建议。)
风控策略里有一类工作,做的人很多、总结的人很少:一条规则从被写下来的那一刻,到被删掉的那一天,中间要经历什么。
写规则是最容易的部分。一句话:近三个月征信查询次数 > 6 且 无抵押 → 拒绝。五个字能说完动机,十个字能写完表达式。
难的是它之后的三件事:
第一件,该不该写成规则。 同样一句"近三个月查询多的人风险高",它可以被写成一个模型特征,也可以被写成一条硬规则。这两个选择不是"哪个更准",它们是两个不同的问题。选错了,后面所有工作都在错误的层面打转。
第二件,怎么管。 规则一旦上线就不是文本了,它变成了一台会持续做出决策、持续影响真实资金的机器。这台机器需要身份证、需要时间轴、需要变更记录、需要被比较的能力。缺哪一样,三年后你都会在某个审计场合发现补不回来。
第三件,什么时候该删。 这是最反直觉的一环:加规则和删规则的风险是不对称的,而且数据系统天然偏向"多留规则"。 原因是数学的——被拒绝的人没有结果标签。你看不见他们,所以永远无法证明"拒错了"。这条偏差会把任何策略系统慢慢推向臃肿。
这三件事构成一个闭环。下面按顺序走一遍。
先把三块各自的核心问题摆在前面,后面每一块展开时都用同一组坐标:
| 环节 | 要回答的问题 | 主要证据来源 | 最容易出错的点 |
|---|---|---|---|
| 定界 | 这个决策该由规则做,还是由模型做 | 约束条件本身(不是数据) | 把"约束问题"当成"预测问题" |
| 治理 | 这条规则现在是什么、过去是什么、改了影响谁 | 决策日志与版本记录 | 只在文本层面做变更管理 |
| 退役 | 这条规则还有增量价值吗 | 反事实推断(不是观测数据) | 用观测数据评估反事实问题 |
一个提前的结论:这三块里,只有治理能靠工程手段彻底解决;定界只能靠判断;退役受制于数据本身的结构性缺陷,只能逼近、无法证明。
01 定界:哪些决策注定写不成模型

1.1 先分清两个不同的优化问题
绝大多数关于"规则还是模型"的争论,起点就错了:它们被当成了同一种东西的两个精度档位。实际上这是两个问题。
模型的本质是估计。
它的目标是让估计尽量接近真实条件概率,评价标准是某种损失函数(AUC、KS、对数损失、Brier 分数)。它的输入是数据,输出是一个连续量,它的有效性依赖于训练分布对当前分布的覆盖程度。
策略的本质是决策。
它的目标是让动作满足一组外部给定的约束
这两个问题的解不互相替代。 一个完美的模型
关键区别在这里:模型输出的是一个位在
1.2 六个结构盲区
下面六类决策,模型在结构上做不了。这里的"做不了"与效果好坏无关,它是问题的形态与模型能表达的东西不匹配。
① 一票否决与硬约束
模型的输出
于是"无论他其他条件多好,命中了欺诈名单就绝对不批"这句话,在模型的输出空间里没有对应的值。你只能取一个切点
数学上说:约束
② 监管要求的是"理由",不是"解释"
这一点常被混淆,值得单独说清。
模型的可解释性工具(SHAP、LIME、部分依赖)给出的是事后归因:给定这个预测值,哪个特征贡献最大。它回答的问题是"模型为什么这么想"。
而监管与客户投诉场景需要的是事前理由:一条可以在拒绝通知里写出来、可以被申诉、可以被复核的命题——"本次拒绝的依据是近三个月征信查询次数超过六次"。
这两者的差别不是精度问题:
| 事后归因(解释) | 事前理由(依据) | |
|---|---|---|
| 方向 | 由结果反推 | 由规则正推 |
| 稳定性 | 随模型版本变化 | 与规则文本一致 |
| 可申诉 | 难——"特征贡献度"不是可辩驳的命题 | 可——"查询次数算错了"是可核验的 |
| 粒度 | 全局或单样本的连续贡献值 | 离散的、具名的条件 |
一个 SHAP 值 +0.12 无法作为拒绝理由递交;一条命中的规则编号可以。这不是技术水平高低,是输出形态决定的。
《个人信息保护法》第二十四条对自动化决策提出了透明度与结果公平公正的要求,并赋予个人要求说明的权利。要满足这一要求,系统里必须存在能够被陈述的决策依据——而这通常是规则层的产物。
③ 分布外行为
模型是内插器。它的可靠性边界大致等于训练数据的覆盖范围。当出现一个训练时没见过的新客群、新渠道、新地区,或者市场环境发生结构性变化时,模型的输出会平滑地外推到某个值——而这个值没有任何保证。
它会给出一个数,不会给出"我不知道"。
规则不受这个限制。年龄 < 18 → 拒绝 这条规则在任何分布下都成立,因为它的正确性不依赖数据。这类规则的集合构成了策略系统的底线层:无论模型多不确定,底线不动。
工程上这叫分布无关性(distribution-free):一条规则的成立与否不假设数据来自哪个分布生成过程。这个性质在模型上花钱也买不到。
④ 响应速度的物理下限
模型的生命周期包含数据积累、特征回溯、训练、验证、上线评审。这条链路的时间尺度以月计,因为其中每一步都依赖真实表现标签的积累——而标签本身需要时间成熟(一笔贷款要过几个账期才知道好坏)。
规则可以小时级上线。
这意味着当外部环境突变时——监管发布新规、突发性欺诈攻击、区域风险事件——只有规则能立即响应。这与"规则更灵活"的说法无关,它是两种技术各自的时延结构决定的分工:模型承担需要历史积累的判断,规则承担不能等历史的判断。
⑤ 组合约束与互斥逻辑
有一类决策压根不是预测问题,它属于约束满足问题(constraint satisfaction)。例如:
- 同一客户不得同时命中两个互斥产品的准入条件
- 一组规则覆盖的客户数需要落在某个区间(配额)
- 若客户已被 A 类规则放行,则 B 类规则不应再改变其额度
- 若干条件必须同时满足才成立(合取),单独任一条件不成立
这些命题的形态是逻辑关系,不是概率关系。模型输出一个分数,无法表达"这两个条件必须一起看"。你可以把这些约束编码成特征,但那样做只是把一个逻辑问题塞进统计框架,得到的仍是一个"平均意义上满足"的策略,而非"结构上满足"的策略。
⑥ 可证明性要求
在公平性与合规审计场景里,有时需要证明的东西与"结果大体公平"无关,它是"这套逻辑里没有出现某个变量"。
对规则系统,这个证明是结构性的:把规则集展开,检查每条规则的变量使用情况,结论是确定的。
对模型,你只能做统计检验(比如检测预测与受保护属性之间的相关性),而"未检测到显著相关"不等于"未使用"。这两者的证明强度不在一个层级上。
1.3 反过来:哪些决策注定写不成规则
对称地说,也有规则做不了的:
| 决策特征 | 更适合 | 原因 |
|---|---|---|
| 需要综合几十上百个弱信号 | 模型 | 规则书写成本随条件数指数上升(组合爆炸) |
| 信号与风险的关系是连续、非单调的 | 模型 | 规则天然是分段常值函数,表达连续关系需要极多分段 |
| 样本量足够、分布稳定、有成熟标签 | 模型 | 恰好是模型的主场 |
| 需要精细排序(定价、额度梯度) | 模型 | 规则的输出是离散档位,粒度受限 |
| 相关性弱但联合有效 | 模型 | 单条规则无法表达"每一个都不强、合起来很强" |
1.4 判据:一个问题该落在哪一层

把上面的内容压缩成一组可操作的判据。按顺序问,第一个回答"是"的地方就是归属层:
- 这个约束是否来自系统外部(监管、合同、风险偏好),且不随数据变化? → 规则层。这是硬约束,模型学不会。
- 要求是否包含"必须给出可陈述的理由"或"必须证明未使用某变量"? → 规则层。
- 该决策是否需要在标签成熟前就生效? → 规则层。
- 它是否是逻辑组合/互斥/配额约束? → 规则层。
- 剩下的:需要综合大量弱信号、需要精细排序、分布稳定且标签充足 → 模型层。
第一环定界 判断依据:约束本身
① 问题形态
<p>是"该做什么"还是"会发生什么"</p>
<p>约束问题 → 规则</p>
<p>估计问题 → 模型</p>
② 证据来源
<p>来自外部规范与风险偏好</p>
<p>不来自数据的统计规律</p>
<p>因此不能用数据反驳</p>
③ 失效模式
<p>把约束当成预测来做</p>
<p>结果:尾部行为失控</p>
<p>表面指标正常,极端情况失守</p>
一句话:这一环无法用数据回答——约束来自外部,你只能把它翻译对,不能把它算出来。
02 治理:一条规则的版本学
定界决定了该写什么,治理决定了写下去之后怎么活。
先说一个常被低估的事实:规则一旦上线,它就不再是文本了。 它变成一台持续输出动作、持续影响资金的装置。对装置的管理要求与对文本的管理要求完全不同——文本需要的是保存,装置需要的是可追溯、可比较、可复现。
2.1 版本的对象是决策语义,不是文件
最常见的做法是把规则文件放进版本控制,每次改动提交一次。这解决了一部分问题,但漏掉了核心:文件的历史不等于决策的历史。
原因在于两者之间存在一个映射,而这个映射不是单射:
- 一次文本改动可能不改变任何决策(改了注释、调整了无关条件)
- 一次微小的文本改动可能剧烈改变决策(一个不等号方向、一个边界值
>改>=)
第二类尤其危险。查询次数 > 6 改成 >= 6,文本上只多了一个字符,决策上可能多拒绝几万人。如果变更管理只盯着文本,这次改动的规模会被系统性低估。
所以版本管理的对象应当是:给定任意时刻,这套系统对任意样本会做出什么动作。 这才是需要被记录和比较的东西。
2.2 身份证:rule_id 为什么不能回收
每条规则需要一个标识。这个标识的约束比想象中严格:
rule_id 在系统生命周期内唯一,且永不复用。
理由在于引用完整性。决策日志里记录的是 rule_id,规则全文不在日志里。如果一条规则被删除后,它的 id 被分配给了一条新规则,那么历史上所有引用这个 id 的决策记录,其归属都会静默地指向错误的规则。
这个错误的恶劣之处在于它不可检测:日志完整、格式正确、能查、能导出,只是查出来的"当时命中的规则"是另一条。审计场景下,这会直接摧毁证据链。
工程上的标准做法是用单调递增的序列或随机唯一标识作为 id,并在规则删除后标记为 retired 而非物理移除。id 是标识符,不是命名空间。
2.3 双时间轴:什么时候生效与什么时候被记录

这一节讲一个数据结构概念,它在策略治理里的重要性远超它的一般知名度:双时间轴(bitemporal)。
一条规则的变更涉及两个独立的时间:
- 有效时间(valid time):这条规则所描述的业务意图,在业务世界里覆盖哪一段时间
- 记录时间(transaction time):这条规则的这条版本,是在哪个时刻被系统记录下来的
为什么必须分开?因为策略调整常常是追溯性的。
现实里很常见的一种情形:某个参数在业务上从月初就该生效,但配置直到月中才改过来。如果系统只有一个时间戳,就无法回答一个基本问题:"如果我在月初那次审计时查询,系统当时认为的规则是什么?"
两个时间轴的组合给出四种状态:
| 记录时间 ≤ t | 记录时间 > t | |
|---|---|---|
| 有效时间 ≤ t | 当时已生效且已知 | 事后补录的追溯生效 |
| 有效时间 > t | 已录入但未生效 | 尚未存在 |
规范做法是:任何查询都带两个时间参数——as_of_valid 和 as_of_transaction。返回的是同时满足 valid_from ≤ as_of_valid 与 recorded_at ≤ as_of_transaction 的那个版本。
这在数据操作上就是一次 as-of join(时序连接),匹配条件用区间重叠,等值在这里不成立:
第一行要求版本
行业里把这类要求称为"时点可复现"(as-of reproducibility),是审计与合规的基本门槛之一。它不需要复杂技术,需要的是一开始就把两个时间字段都设计进去——这是典型的"事后补不回来"的设计决策。
2.4 diff 的语义:文件差异不等于决策差异
有了版本,下一步是比较。这里的核心转换是:
比较的对象是规则作用在人群上产生的决策集,规则文本本身不参与比较。
给定两个版本
:新版本多放行的人(放宽的部分) :新版本多拒绝的人(收紧的部分)
有了这两个集合,才能回答真正重要的问题:
- 规模:
占总体的比例是多少? - 方向:这次改动净效果是放宽还是收紧?
- 人群结构:差异集中在哪些特征维度上?这一条最关键——如果差异集中在某个地区、某个客群、某个年龄段,那可能不是策略问题,是合规问题。
- 质量:
和 这两个人群的既有表现如何?(有标签的部分)
第 3 点是很多变更评审漏掉的。整体差异 2% 看起来温和,但如果这 2% 全部落在同一个特征群体上,性质完全不同。均匀的影响可用损益评估,集中的影响需要合规评估。
2.5 归因必须自包含
前面说了 rule_id 不能复用。但仅有一个稳定的 id 还不够——归因信息必须在决策发生时写入,不能事后重建。
原因很直接:事后重建需要读取"当前的规则版本",而规则已经变了。用今天的规则去解释昨天的决策,得到的必然是错的。
正确做法是让每条决策记录自包含:
:决策时用到的输入(事实快照) :规则集版本 :命中的规则(以及它们的当时内容或引用) :命中规则的优先级顺序 :最终动作 :决策时刻
注意
这个要求在存储上有成本(每条决策要存相对完整的输入),但把它当开销是算错了账,它是能力:没有它,系统只能回答"现在规则是什么",无法回答"当时为什么拒了这个人"。
第二环治理 判断依据:决策日志与版本记录
① 记录什么
<p>决策语义,不是规则文本</p>
<p>两个时间轴:有效时间 + 记录时间</p>
<p>决策记录自包含输入快照</p>
② 靠什么保证
<p>rule_id 永不复用</p>
<p>双时间查询(as-of join)</p>
<p>比较用决策集对称差,不用文本 diff</p>
③ 失效模式
<p>只做文本层变更管理</p>
<p>结果:小改动造成大影响而无人预警</p>
<p>事后重建归因,得到错误结论</p>
一句话:这一环可以靠工程手段彻底解决——但前提是设计阶段就把时间与标识放进结构里。事后补的代价高一个量级。
2.6 回滚与重做,是两件事
"可回滚"是版本管理最常被提到的能力,但它常被理解成一件事,实际是两件:
回滚(rollback):从时刻
重做(replay):对时刻
回滚是工程操作,重做是业务操作,而且重做在风控里通常是做不到的。
原因是不可逆性:决策已经执行了。钱放出去了,额度给了,合同签了。你无法"重新决策"一笔已经发生的业务,只能做补偿动作(降额、提前催收、标记观察、要求补充材料)。而补偿动作的效力远低于事前拒绝。
这个不可逆性推出一条重要的工程原则:
不要指望靠回滚来纠正策略错误。回滚能止损,不能消除损失。
既然事后纠正能力有限,风险就必须在事前控制。这就是灰度与影子运行的统计学意义——下面单开一节。
2.7 被忽略的变更面:规则顺序也是策略
这一节讲一个几乎总是被漏掉的治理对象。
多条规则同时命中一个样本时,系统需要一套冲突解决规则。这个机制在决策模型规范里有正式定义——命中策略(hit policy),包括以下类型:
| 命中策略 | 语义 | 输出数量 |
|---|---|---|
U Unique | 规则不允许重叠,只能有一条命中(规范默认值) | 单条 |
A Any | 可多条命中,但所有命中的输出必须相同,取任一 | 单条 |
P Priority | 可多条命中,取输出优先级最高的那条 | 单条 |
F First | 按规则在表中的顺序自上而下,取第一条命中 | 单条 |
C Collect | 收集全部命中,输出为一个任意序列表 | 多条 |
R Rule order | 收集全部命中,按规则在表中的顺序输出 | 多条 |
O Output order | 收集全部命中,按输出优先级降序输出 | 多条 |
(七种命中策略的定义出自决策模型与标记法的标准族;上表语义按标准文档与实现文档的表述整理。需要注意:不同实现平台的支持范围不同,例如 Camunda 明确说明其尚未支持 P 与 O,需要用 C 加自定义聚合来模拟。选用策略前应先核对具体引擎的支持矩阵。)
工程实践中最常见的是 F(first hit),因为它直观、执行快、单条命中即可短路。但它带来一个隐蔽后果:
在 F 策略下,规则顺序本身就是策略,而顺序通常不在版本管理的范围内。
把两条规则换个位置,任何一条规则的内容都没变,规则集的文本 diff 是空的,但决策集可能变了。这构成了治理上的一个盲区:变更管理系统会报告"无变更",而系统行为已经改变。
修法不复杂,但需要意识到:
- 规则顺序必须作为受版本管理的属性;它在配置文件里只是排版
- 顺序变更要触发与内容变更相同的评审流程
- 顺序变更要产生决策集 diff(因为它的影响和内容变更是同一量级的)
换个说法:只要系统允许"顺序影响结果",顺序就是策略的一部分,就必须按策略来管。
2.8 灰度对比的统计下限
前面说了重做做不到,所以风险要在事前控制。事前控制的标准手段是灰度(champion-challenger):把一个切片分给新版本,观测足够样本再决定是否全量。
这里有一个常被忽略的定量约束:样本量决定了你能检测多大的差异,而这往往比想象的大得多。
比较两组比例(如通过率)所需的最小样本量(每组):
其中
代入一组典型取值:
每组约十五万样本。
这个数字的实践含义是:如果一个渠道一天只有几千笔申请,想检测半个百分点的通过率差异,需要几十天。而"上线一周看看数据"这种节奏,在这个精度要求下根本不成立——不是数据不好看,是样本量不足以支持任何结论。
反过来说,如果只关心较大的差异(比如 2 个百分点),所需样本量按
按同一组取值(
| 想检测的差异 | 每组所需样本量 | 一天 3000 笔申请时所需天数 |
|---|---|---|
| 0.5 个百分点 | ≈ 150,700 | ≈ 100 天 |
| 1 个百分点 | ≈ 37,700 | ≈ 25 天 |
| 2 个百分点 | ≈ 9,400 | ≈ 6 天 |
(天数按两组各半分流、每天 3000 笔估算,即每天每组 1500 笔。)
这张表的用法是反向的:先看你手上有多少流量、愿意等多少天,就能算出你能发现的最小差异是多少。反过来先定一个"想发现 0.5 个百分点",再去凑流量,通常会发现流量差得远。
首行的数字值得多看一眼:在一个日均三千笔的渠道上,想可靠地发现半个百分点的通过率差异,需要灰度一百天。 多数策略变更的评审周期根本容不下这个时间尺度——这意味着实际工作中,"灰度验证"能提供的保证,通常比参与评审的人以为的要弱得多。承认这一点,比走一遍形式上的灰度更诚实。
所以灰度的设计要从**「我想发现多大的问题」**倒推,先算样本量,再定灰度比例和观测时长。灰度比例不是拍出来的,是算出来的。
2.9 灰度分流的偏差问题
还有一个技术细节:分流的分配方式会影响结论的有效性。
- 随机分流:样本随机分配,两组可比,可以直接比较
- 按时间分流(如上午跑新版本、下午跑旧版本):混淆了时间效应,不合格
- 按渠道/地区分流:两组客群结构不同,测得的是"客群差异 + 策略差异"的混合
如果能做到随机,直接用双样本比例检验。如果不能(业务上给不了随机),就必须做分层比较或匹配:按关键维度(渠道、额度段、客群等级)分层,在层内比较再汇总,用加权平均抵消结构差异。
其中
不做这一步的灰度对比,得到的数字不能作为决策依据——它测的是两组人群的差异,不是两个策略的差异。
03 退役:一条规则的死后验尸
治理讲完,剩最后一环,也是最难的一环。
一条规则上线后,怎么判断它该退休?
3.1 换点分析:把一条规则的价值拆开
先明确问题:一条规则的价值是什么?
直觉答案是"它拦截了多少坏人"。这个答案是错的,而且错得很关键——它没有区分规则拦下的部分里,有多少是模型本来就会拒的。
设模型分数为
规则
两个集合的关系可以拆成三块:
只有"增量部分"
如果这个集合很小,说明模型已经学到了这条规则所表达的规律,规则是冗余的。这就是第一条退役判据的数学来源:
增量率接近 0,规则可以退;增量率高,规则保留了模型没有的信息。
3.2 增量价值的检验口径
仅有增量还不够,还要看增量部分的质量。这里可以用一个条件独立性检验来表述:
规则
如果不能拒绝
实操上不容易直接做这个检验(因为需要条件概率函数),但可以用分层近似:按分数分段,在每一段内比较"规则命中"与"规则未命中"两组的表现差异,再用分层加权汇总。这与 2.9 节的分层比较是同一套技术。
3.3 四个退役判据

把上面内容整理成判据表。四条要一起看,任何单独一条都不足以决定删除:
| 判据 | 问的问题 | 数据来源 | 门槛方向 |
|---|---|---|---|
| 增量归因 | 它拒的人里,有多少模型也会拒? | 决策日志 + 模型分数 | 增量率低 → 倾向退役 |
| 稳定性 | 命中率的时间序列是否漂移? | 命中率时序 | 漂移大 → 需重估而非直接删 |
| 合规性 | 它依赖的依据是否还有效? | 外部规范 | 依据失效 → 必须退役(非数据判断) |
| 成本收益 | 维护成本 vs 净损益贡献 | 工程计量 + 损益测算 | 成本 > 收益 → 权衡退役 |
四个判据的性质不同,这一点值得强调:
- 增量归因是数据判据,可以量化
- 稳定性是监测判据,用来区分"规则失效"和"规则需要的输入变了"
- 合规性不是数据判据——它由外部规范决定,数据算不出来
- 成本收益是工程判据
第 2 条要展开说一点:命中率的漂移有两种方向,含义完全不同。
- 命中率上升:可能因为规则依赖的变量分布整体右移(比如经济下行期查询次数普遍增加)。这时规则的有效性可能没变,但它开始影响过多人群——规模问题。
- 命中率下降:规则依赖的变量在新客群中不再常见。这时它可能已经失去作用——效力问题。
用统计过程控制的方法(如 CUSUM、KS 检验)可以把"正常波动"与"结构性漂移"区分开。没有这一步,就只能靠人眼盯报表,而人眼在几十条规则上不可靠。
第三环退役 判断依据:反事实推断
① 判据
<p>增量率(控制模型分数后的净贡献)</p>
<p>命中率时序漂移</p>
<p>合规依据是否仍有效</p>
<p>维护成本与损益贡献</p>
② 数据来源
<p>决策日志 + 分数分布</p>
<p>需要的是反事实标签</p>
<p>而反事实标签天然缺失</p>
③ 失效模式
<p>规则只增不减,系统臃肿</p>
<p>结果:维护成本上升、可解释性下降</p>
<p>且没有任何指标会报警</p>
一句话:这一环最弱——不是方法不够好,是被拒人群没有结果标签,观测数据在结构上回答不了反事实问题。
3.4 为什么删规则比加规则难:损失函数的不对称
上面都是方法层面。但真正让规则只增不减的原因在组织层面,而它的根源是数学的。
加规则的代价是不可观测的,删规则的代价是可观测的。
具体说:
- 加一条规则 → 多拒了一批人。这些人后续表现如何?不知道——他们没被放款,没有结果。所以"这条规则误拒了多少好人"这个数,在数据里不存在。
- 删一条规则 → 多放了一批人。这些人后续表现如何?会知道——他们会出现在放款数据和表现数据里。如果他们是坏人,坏账率上升是可见的。
于是任何一次变更评审面对的都是这样一个不对称:
| 收益 | 代价 | |
|---|---|---|
| 加规则 | 拦截的坏账(可见,但需推断) | 误拒的好人利润(不可见) |
| 删规则 | 释放的误拒利润(不可见) | 新增的坏账(可见) |
两边的收益和代价各有一半落在不可见的一侧。 而人(和指标体系)天然对可见的量更敏感。
这不是判断力问题,是信息结构问题。它导致一个稳定但错误的均衡:加规则总是"稳妥"的,删规则总是"冒险"的。
长期后果是策略系统单调膨胀。第 3.5 节给出这个偏差的数学表述,第 3.6 节给出三种可能的部分修正。
3.5 反事实缺失:被拒的人没有标签
把上面的现象写成数学。
设样本
而被拒绝人群的
后果是一个选择性偏差。假设想估计"某条规则拒绝人群的坏账率"
- 如果被拒人群的风险确实显著更高,比值很大,用接受人群的表现去代理会低估规则价值(把规则的作用算小了)
- 如果两者接近,代理误差小,但那时规则本身的价值也小
- 极端一点:若规则拒掉的人里有相当比例其实会还钱,那么规则的价值被系统性高估——因为这部分误拒永远不出现在坏账统计里
关键在于:偏差的方向和大小都依赖那个观测不到的量。 这是问题的结构性缺陷,不是估计技巧能消除的。
3.6 三个补标签的办法,各自的代价
既然直接观测不可得,实践中发展出三类方法。它们的共同特征都是用某种代价换取部分反事实信息。
① 拒绝推断(reject inference)
思路:用被接受人群训练一个模型,再用这个模型对拒绝人群做推断,把推断结果当作伪标签纳入评估。
代价与局限:这是一个自洽性假设——它假设"被接受人群学到的规律在拒绝人群上也成立"。如果两者分布不同(这正是拒绝的原因),假设本身就成问题。方法有效性与分布差异成反比,而分布差异无法被验证。
② 相似样本迁移(swap / nearest-neighbor 类比)
思路:对每个被拒样本,在被接受人群里找特征相似的样本,用他们的表现作代理。
代价与局限:相似性的定义是主观的(用哪些维度、什么距离度量),而且高维空间里"相似"本身不可靠(维度灾难)。结果对相似度定义敏感,稳定性有限。
③ 主动探索(随机放行一小部分)
思路:按某个小比例
这是唯一能直接获得反事实标签的方法,本质上是**探索-利用权衡(exploration-exploitation)**在风控中的应用:牺牲少量确定收益,换取对策略的有效性做出无偏估计的能力。
代价是真实的:放行的那部分人里确实会有坏账,这是确定的损失。所以
也就是用 2.8 节的样本量公式先算出需要多少标签,再倒推探索比例。探索不是随便放一点,它是一次有样本量要求的实验。
三者的取舍可以概括为:
| 方法 | 是否获得真实反事实 | 主要代价 | 可信度 |
|---|---|---|---|
| 拒绝推断 | 否(推断值) | 依赖分布假设 | 中,且假设不可验证 |
| 相似样本迁移 | 否(代理值) | 对相似度定义敏感 | 中低 |
| 主动探索 | 是 | 确定的坏账损失 | 高(但样本量受限) |
没有一个方法是免费的。 这也是为什么"策略退役"在实践中的状态通常是:有方法,但很少严格执行——执行的成本是真实可见的,而不执行的代价是缓慢累积的。
04 收束:这条闭环里,哪一环最弱
把三块放在一起看,能得到一个比单看任何一块都更清楚的判断。
定界决定的是系统能不能做对的事。它靠判断,不靠数据——因为约束来自外部。这一环出错的后果是系统的行为在结构上偏离业务意图,而所有表面指标可能都正常。
治理决定的是系统能不能被信任。它靠工程,且可以在设计阶段一次性做对:双时间轴、不复用的 id、自包含的决策记录、决策集 diff、顺序纳入版本管理。这一环是三者中唯一可以彻底解决的。
退役决定的是系统能不能长期保持可用。它受制于数据本身的结构缺陷——被拒人群没有标签。这一环只能逼近,无法证明。
三者的解决程度不同,这个不同本身就是结论:
(这里的">"指"可被确定性解决的程度",不是重要性排序。)
一个统一的视角:这是三个不同的时间尺度
换个角度看,三环对应的其实是三种时间尺度上的问题:
| 环节 | 时间尺度 | 核心困难 |
|---|---|---|
| 定界 | 一次性(设计时) | 约束来自外部,需要把它翻译准确 |
| 治理 | 每次变更 | 需要在结构里预留位置,事后补不回来 |
| 退役 | 长期(季度/年度) | 反事实缺失,没有干净的判据 |
这三者中,唯一在"设计时为未来留下能力"的是治理。 另两环分别是"当下判断"和"长期观测"。
所以如果只能做一件事——把治理做对。因为它是三环里唯一一次投入、长期受益、且不依赖未来数据可得性的环节。
而治理里最容易被省掉的两项,恰好是影响最大的两项:
- 双时间轴——省掉它,事后永远无法回答"当时系统认为的规则是什么"
- 决策集 diff——省掉它,变更评审只能看文本差异,而文本差异与影响规模之间没有稳定关系
这两项的共同点是:做的时候看不出价值,需要的时候补不回来。
一条规则的完整一生
回到开头那条规则:近三个月征信查询次数 > 6 且 无抵押 → 拒绝。
它的一生大致是这样:
第一天,它被写下来。在这一步要回答的是定界问题:这个约束为什么必须写成规则?如果答案是"因为业务上不允许",那它属于规则层;如果答案是"因为数据显示这类人风险高",那它应该先去模型层试试。
上线那天,它获得一个永不复用的 id,带上两个时间戳(生效与记录),进入版本管理。它的顺序位置也被记录下来,因为顺序会影响结果。
运营期间,每次改动都会产生一次决策集 diff,让评审看到"这次多拒了谁、多放了谁、这些人分布在哪些维度上"。
若干季度后,它需要被重新评估:控制模型分数后,它还有增量吗?命中率是否漂移?依据是否仍有效?维护成本与损益贡献是否匹配?
最后,如果四条判据都指向退役,它被标记为 retired——id 保留,不回收,因为历史上引用过它的那些决策记录,还需要它能被查到。
这条规则的真正结局是"被完整地记录了一生"——删掉只是其中一刻。
说明:本篇为技术原理型文章,不含任何真实业务数据实验。文中数学推导(增量率的集合分解、灰度样本量公式、反事实缺失的偏差表述)为自洽推导,用于说明原理,不构成授信政策建议。
说明:本文只讨论策略方法、工具形态与数学原理,不涉及任何机构的内部流程与未公开信息。