4. 模型开发文档规范:文档结构、版本控制、变更记录、可追溯性要求

模型开发文档,说白了就是风控模型的「出生证明」和「成长日记」。

我见过太多团队,模型做得漂亮,但文档一塌糊涂。监管一来,问三个问题就卡住了:谁做的?什么时候改的?为什么这么改?

嗯,今天我们就聊聊怎么把文档这件事做扎实。

4.1 文档结构:骨架要清晰

我个人习惯把模型文档分成三大块:项目背景、技术细节、运维记录。你想想看,这三块正好对应了「为什么做」「怎么做」「做得怎么样」。

标准文档结构(我推荐用这个模板):

  1. 封面与元数据 — 模型名称、版本号、创建日期、责任人
  2. 项目背景 — 业务需求、数据来源、建模目标
  3. 数据探索与预处理 — 变量分布、缺失值处理、异常值剔除
  4. 模型开发 — 算法选择、参数调优、变量筛选
  5. 模型验证 — 区分度、稳定性、校准度
  6. 模型部署 — 上线策略、接口说明、监控方案
  7. 附录 — 代码清单、会议纪要、审批记录

我在项目中遇到过一件事:有个同事把数据清洗的代码和模型训练的代码混在一个文档里。后来模型出了问题,排查了三天才发现是数据预处理阶段有个字段类型搞错了。从那以后,我要求每个阶段必须独立成章。

小技巧:每个章节开头加一段「本章目标」,写清楚这章要解决什么问题。比如「本章说明如何对收入字段进行分箱处理」。这样别人读文档时,一眼就知道重点在哪。

4.2 版本控制:别让文档变成一团乱麻

版本控制这件事,我吃过亏。曾经有个项目,模型迭代了七八次,但文档只有一个「最终版.docx」。你猜怎么着?后来发现那个「最终版」其实是第三版的内容,后面五次修改全都没记录进去。

为什么会这样?说白了就是没有版本管理意识。

我建议用语义化版本号:

版本号 含义 举例
v1.0.0 首次发布 模型第一次上线
v1.1.0 功能更新 新增一个变量
v1.1.1 补丁修复 修正一个计算错误
v2.0.0 重大变更 算法从逻辑回归换成XGBoost

注意:版本号一旦发布,就不能修改。如果发现错误,只能发布新版本。这是审计的基本要求——保证历史版本不可篡改。

实际操作中,我习惯用Git管理文档。每次提交都写清楚commit message,格式是「版本号 + 变更类型 + 简要说明」。比如:

v1.1.0 - 新增 - 增加「近6个月逾期次数」变量
v1.1.1 - 修复 - 修正WOE计算中分母为0的异常处理
v2.0.0 - 重构 - 从逻辑回归切换为LightGBM,AUC提升3%

4.3 变更记录:每一笔改动都要有据可查

变更记录是审计最关注的部分。监管来了,第一件事就是翻变更记录。

我建议每份文档末尾都附一张变更记录表,格式如下:

日期 版本 变更内容 变更人 审批人 变更原因
2024-01-15 v1.0.0 初始版本 张三 李四 首次建模
2024-03-20 v1.1.0 增加收入分箱调整 王五 李四 业务反馈低收入群体区分度不足
2024-06-10 v2.0.0 算法切换为XGBoost 张三 赵六 原模型稳定性下降,PSI超过0.15

我曾经遇到过一个案例:某银行被监管处罚,原因就是变更记录里只写了「优化模型」,但没写具体优化了什么。监管认为这是「黑箱操作」。所以,变更原因一定要写清楚,不能含糊。

避坑指南:我曾经见过有人把变更记录写在邮件里,文档里没有。结果那人离职了,邮件也找不到了。记住:所有变更记录必须沉淀在文档里,不能依赖任何人的记忆或邮件。

4.4 可追溯性要求:从数据到决策,每一步都能回查

可追溯性,说白了就是「反向查找」。给你一个模型结果,你能一路追溯到原始数据吗?

我要求团队做到「三可追溯」:

  • 数据可追溯:每个变量都能找到原始数据源、加工逻辑、转换公式
  • 代码可追溯:每个模型版本都有对应的代码版本,代码和文档一一对应
  • 决策可追溯:每个审批节点都有记录,谁在什么时间批准了什么

举个例子,如果模型输出一个客户的信用评分是650分,你应该能回答:

  1. 这个分数用了哪些变量?(比如收入、负债、历史逾期)
  2. 这些变量是怎么算出来的?(比如收入是取近6个月均值)
  3. 原始数据从哪里来的?(比如来自核心系统表T_CUST_INCOME)
  4. 这个版本的模型是谁开发的?谁审批的?

我习惯在文档里加一个「数据血缘图」,用表格形式展示每个变量的完整链路:

变量名 原始表 原始字段 加工逻辑 转换函数 代码行号
income_avg T_CUST_INCOME monthly_income 近6个月均值 mean() feature_eng.py:45
debt_ratio T_CUST_LOAN total_debt 总负债/总收入 divide() feature_eng.py:78

监管红线:可追溯性不是可选项,是必选项。银保监会《商业银行互联网贷款管理暂行办法》明确要求,模型开发过程必须完整记录,确保可追溯。做不到这一点,合规审计直接亮红灯。

4.5 知识体系总览

下面这张图,是我梳理的模型文档规范核心逻辑。你看一眼就能明白整个框架:

模型开发文档规范核心框架 模型开发文档 文档结构 版本控制 变更记录 可追溯性 项目背景 技术细节 运维记录 语义化版本号 Git管理 不可篡改 日期/版本/内容 变更人/审批人 变更原因 数据可追溯 代码可追溯 决策可追溯 核心原则: 谁做的?什么时候改的?为什么这么改? —— 三个问题,回答清楚,文档就合格了

这张图把四个核心要素串起来了。你写文档时,就按这个框架来,保证不会漏项。

最后说一句:文档不是写给监管看的,是写给未来的自己看的。半年后你回头看自己写的模型,如果文档写得清楚,你能省下80%的回忆时间。我吃过这个亏,所以现在特别较真。


公众号:蓝海资料掘金营,微信deep3321