第2章 模型历史数据收集:提取建模样本、线上评分日志、特征数据、标签数据
模型复盘优化的第一步是拿齐“原料”——历史数据集。原料质量直接决定后续诊断与调优的有效性。本章覆盖从生产环境到分析环境的数据提取、校验与归档流程,确保建模样本、线上评分日志、特征宽表与标签数据可追溯、可复现。
核心原则:所有提取操作必须基于时间戳对齐的生产快照,禁止混入未来信息或跨版本特征。每批数据提取后应生成校验摘要,记录行数、时间范围、缺失率与分布概要。
2.1 适用场景
- 需要复盘线上模型评分效果(如AUC、KS、PSI、Lift)与预期偏差时。
- 准备训练新一代模型,需要复用历史特征与标签构建训练集。
- 诊断评分模型失效原因(特征漂移、样本选择偏差、标签泄漏)。
- 合规审计或模型监管要求提供可追溯的历史开发数据。
2.2 前置条件
- 已确定复盘时窗(如过去6个月或最近一个完整季度)。
- 已获取数据仓库/离线表访问权限(Hive、BigQuery、Redshift等)。
- 已准备数据拉取脚本(Python、SQL或Spark)并经过同行审查。
- 已建立数据脱敏规则:客户ID、手机号等PII字段需脱敏或散列。
- 拥有模型评分日志存储路径(如ELK、HDFS、S3),日志包含
request_time、score、model_version、decision等字段。
2.3 操作步骤
- 确认复盘时窗与模型版本:与业务方确认复盘起止日期、线上已生效的模型版本号(major.minor.patch)。记录于复盘登记表。
- 提取线上评分日志:从日志系统拉取时窗内所有评分记录,过滤
model_version为目标版本。每条日志应包含:sample_id、score、timestamp、decision。 - 提取建模样本ID列表:从模型训练元数据表查询该版本的训练集、验证集、测试集样本ID(分区或列表)。用于去重与全量映射。
- 拉取特征数据(特征宽表):以
sample_id为键,join评分时窗对应的特征快照表。特征表需记录特征名称、值、特征版本。输出为feat_{table_name}.parquet。 - 关联标签数据:从标签系统(如逾期表现表、转化表)拉取目标标签,时间窗口对齐复盘要求(如“申请后90天逾期>=30天”)。标签来源表包含
sample_id、label、label_time。 - 合并建模样本、评分日志、特征与标签:以
sample_id为主键进行左连接,生成完整分析宽表。检查主键唯一性,输出为full_analysis_{version}.parquet。 - 数据校验与摘要生成:运行校验脚本,输出行数、缺失率、特征与标签分布、评分区间直方图。生成校验报告并归档。
效率提示:如果一次拉取数据量超过内存(如亿级记录),应采用分月/分日增量拉取策略,使用Spark或Dask分布式处理,最后合并成单一parquet分区目录。
2.4 输入输出物
| 输入/输出 | 内容说明 | 存储格式 | 示例路径 |
|---|---|---|---|
| 输入 | 线上评分日志(原始) | JSON / CSV | /data/score_log/2025/01/ |
| 输入 | 特征快照表(历史版本) | Parquet | /warehouse/features/snapshot/ |
| 输入 | 标签表现表 | Parquet / Hive | /warehouse/label/overdue |
| 输出 | 完整分析宽表 | Parquet(分区) | /analysis/model_review/v3.2.1/ |
| 输出 | 数据校验报告 | HTML / Markdown | /analysis/model_review/v3.2.1/validation.html |
2.5 责任边界
| 角色 | 职责 |
|---|---|
| 数据工程师 | 提供数据拉取脚本、权限配置、数据脱敏。保证数据管道可重复执行。 |
| 模型分析师 | 定义复盘时窗、模型版本、特征列表、标签定义。执行校验并签字确认。 |
| 业务/风控 | 确认复盘业务逻辑(如逾期口径),审批数据使用申请。 |
| 质量控制 | 独立交叉验证输出行数、关键字段分布、标签泄漏风险。 |
2.6 记录材料
- 数据拉取脚本及其版本(存放于Git仓库,tag为
data_extract_v1.2)。 - 数据校验报告(包含行数、缺失率、特征分布概要、评分分箱直方图)。
- 数据溯源表:记录
sample_id、原始来源表、快照时间、模型版本。 - 复盘登记表(Excel / 共享文档):包含时窗、模型版本、数据路径、签字确认栏。
2.7 异常处理
常见异常与应对:
- 评分日志缺失部分时间段:检查日志采集服务是否中断。若中断,只能使用可用区间并备注在报告中,模型复盘需说明样本覆盖度。
- 特征表与评分日志sample_id不匹配:可能存在ETL延迟或ID映射错误。需联合数据工程师自查,必要时回源系统重新提取。
- 标签时间窗口尚未关闭:对于“申请后90天逾期”标签,若当前时间距离最新申请不足90天,应剔除该部分样本或标记为“待定”。
- 主键重复:合并时发现非唯一键(如同一sample_id出现多条评分记录)。应先聚合:保留时间最新的一条评分记录,或与业务确认取第一次申请记录。
- 脱敏后数据无法重连ID:需在脱敏前保留临时映射表,提取完成后销毁映射关系,仅保留脱敏ID。
2.8 验收标准
- 输出数据行数在预期误差范围内(±5%),评分日志覆盖率达到复盘时窗有效值的95%以上。
- 特征宽表字段与模型开发时的特征schema完全一致(字段名、类型、缺失率差异<2%)。
- 标签定义与业务口径一致,标签分布与历史统计无明显偏移(若有,需业务解释)。
- 数据校验报告通过部门内交叉审核,所有异常情况均有书面说明。
- 所有提取脚本已上传Git仓库,并附带README说明运行参数与依赖。