2. 风控训练数据基础
在风控模型的生命周期中,训练数据是决定模型上限的第一要素。很多团队在模型上线后才发现训练效果与生产表现存在明显落差,追根溯源,问题往往不在算法,而在数据基础环节。本节围绕训练数据来源、生产数据链路、特征工程数据、样本标签体系与常见数据存储形态五个方面,建立对风控训练数据的整体认知,为后续一致性校验打下基础。
一、训练数据的四大来源
风控训练数据通常来自多个异构系统,理解来源差异是判断数据一致性的前提。
- 业务系统数据:来自信贷、支付、账户等核心业务库,包含申请信息、交易流水、还款记录等,是样本与标签的主要来源。
- 埋点与行为数据:来自App、H5、小程序等前端埋点,记录设备指纹、点击流、页面停留等,常用于反欺诈特征。
- 第三方数据:征信报告、多头借贷、黑名单、运营商数据等,通过接口或文件方式接入,具有时效性和合规约束。
- 人工审核与标注数据:审核员的判定结论、调查结果、客服工单等,是高质量标签的重要补充。
二、生产数据链路与训练链路的差异
生产环境的数据链路通常是从业务事件触发,经过实时消息、特征计算、模型打分到决策输出;而训练链路是从离线数仓或数据湖中抽取历史数据,经过特征回填、样本构造到模型训练。两条链路在数据流向上相似,但在实现细节上差异巨大。
| 对比维度 | 生产链路 | 训练链路 |
|---|---|---|
| 触发方式 | 事件驱动,实时或准实时 | 调度驱动,T+1或批量 |
| 特征计算 | 在线特征服务,低延迟 | 离线SQL/Spark,全量回填 |
| 时间语义 | 事件时间与处理时间接近 | 依赖分区日期,易产生穿越 |
| 数据范围 | 单次请求或短窗口 | 历史全量样本 |
| 一致性风险 | 在线特征与离线定义漂移 | 回填逻辑与线上不一致 |
一致性校验的核心目标,就是让训练链路中每个样本的特征值,尽可能逼近该样本在生产时刻真实可获得的特征值。这要求我们不仅关注数据本身,还要关注数据产生的时间与顺序。
三、特征工程数据的组织方式
特征工程数据通常以特征宽表、特征视图或特征组的形式组织。离线训练时,常见做法是将用户维度、设备维度、行为维度的特征按主键和时间窗口聚合,形成一张宽表。下面是一个典型的特征回填SQL片段:
INSERT OVERWRITE TABLE risk_feature_train PARTITION (dt='2024-06-01')
SELECT
a.user_id,
a.apply_time,
COUNT(b.txn_id) AS txn_cnt_7d,
SUM(b.amount) AS txn_amt_7d,
MAX(c.device_score) AS device_score
FROM apply_sample a
LEFT JOIN txn_log b
ON a.user_id = b.user_id
AND b.txn_time BETWEEN a.apply_time - INTERVAL 7 DAY AND a.apply_time
LEFT JOIN device_profile c
ON a.device_id = c.device_id
GROUP BY a.user_id, a.apply_time;
这段SQL体现了两个关键点:一是时间窗口必须严格以申请时间为右边界,避免使用未来数据;二是关联维度表时要注意快照时间,设备评分应取申请时刻之前最近一次的快照,而非最新值。
四、样本标签体系与存储形态
样本标签体系决定了模型学习的目标。风控中常见标签包括:逾期标签(如DPD30+)、欺诈标签、拒绝推断标签、行为风险标签等。标签的定义必须与业务口径严格一致,包括观察期、表现期、坏样本定义和灰样本处理规则。
- 观察期:样本进入时的信息采集窗口,通常为申请时刻。
- 表现期:用于判断好坏的时间窗口,如放款后6个月。
- 坏样本定义:如DPD30+、DPD60+、欺诈确认等。
- 灰样本:表现不明确或数据缺失的样本,需明确剔除或单独处理。
在存储形态上,训练数据常见以下几种:
- Hive/Spark表:按日期分区,适合大规模离线训练,是主流形态。
- Parquet/ORC文件:列式存储,压缩率高,读取效率好。
- 特征数据库:如Redis、HBase,用于在线特征服务,也可导出用于训练比对。
- CSV/JSON样本文件:用于小规模实验或跨团队交付,但缺乏schema约束。
五、案例与复盘:一次特征穿越的排查
某消费金融团队在训练反欺诈模型时,离线AUC达到0.92,上线后KS仅0.31。排查发现,设备评分特征在离线回填时使用了最新快照,而在线打分时使用的是申请时刻的设备评分。由于设备评分会随时间变化,离线样本中混入了未来信息,导致模型过度依赖该特征。
修复方式是:在离线回填时,按设备ID和申请时间做时间范围关联,取申请时刻之前最近一次的快照。修复后离线AUC降至0.86,但上线KS提升至0.38,离线与线上表现趋于一致。