3、样本分层策略:全量样本 vs 拒绝推断样本、时间窗口切片、分层抽样与交叉验证
在风控建模中,样本分层是连接原始数据与稳定模型的核心桥梁。本章聚焦于三个实战问题:全量样本与拒绝推断样本的取舍、时间窗口切片对样本分布的影响,以及分层抽样与交叉验证的协同设计。错误的样本分层策略会导致模型过拟合、泛化能力差,甚至上线后快速失效。
3.1 全量样本 vs 拒绝推断样本
风控建模的样本天然存在选择性偏差:只有通过审批的客户才有表现标签(好坏标签),而被拒绝的客户无法观测到真实表现。全量样本仅包含通过客户,拒绝推断样本则通过统计或模型方法为被拒绝客户赋予伪标签。
| 维度 | 全量样本(通过客户) | 拒绝推断样本(含拒绝客户) |
|---|---|---|
| 数据来源 | 历史审批通过的客户 | 全部申请客户(通过+拒绝) |
| 标签真实性 | 真实好坏标签 | 部分真实 + 部分推断标签 |
| 样本偏差 | 高(仅覆盖低风险群体) | 低(覆盖全申请人群) |
| 模型适用场景 | 存量客户风险排序 | 全量申请客户风险预估 |
| 常见方法 | 直接建模 | 模糊扩张法、两阶段法、Heckman 校正 |
实战建议:当拒绝率低于 20% 且通过客户样本量充足时,优先使用全量样本;当拒绝率超过 40% 或业务需要覆盖全量申请人群时,必须引入拒绝推断。拒绝推断的伪标签质量直接影响模型效果,建议使用模糊扩张法(Fuzzy Augmentation)作为基线方案。
3.2 时间窗口切片策略
风控数据具有强时间依赖性,不同时间窗口的样本分布差异显著。常见的时间窗口切片方式包括:
- 滚动窗口:固定窗口长度(如 6 个月),随时间滑动,适用于在线学习或模型持续更新。
- 固定截止点:以某个时间点为界,划分训练集(历史)和测试集(近期),适用于离线模型开发。
- 时间序列交叉验证:按时间顺序划分多个训练/验证对,避免未来信息泄露。
关键指标:时间窗口切片后,需检查各窗口的 坏账率、拒绝率、特征分布稳定性(PSI)。若 PSI > 0.1,说明窗口间分布漂移严重,需考虑分群建模或特征对齐。
3.3 分层抽样与交叉验证
分层抽样保证训练集、验证集、测试集中各风险等级样本比例与原始分布一致,避免因随机抽样导致小类样本(如高风险客户)被稀释。交叉验证则用于评估模型在不同样本子集上的稳定性。
3.3.1 分层抽样策略
- 按风险等级分层:将样本按评分卡分数或历史坏账率分为 5~10 个风险桶,每个桶内按比例抽样。
- 按时间分层:确保每个时间窗口内的样本在训练/验证/测试集中均匀分布。
- 按拒绝推断状态分层:真实标签样本与推断标签样本分开抽样,避免推断噪声污染验证集。
3.3.2 交叉验证设计
风控场景推荐使用时间序列交叉验证(Time Series Split)或分层 K 折交叉验证(Stratified K-Fold)。
| 交叉验证类型 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| 标准 K-Fold | 独立同分布数据 | 实现简单 | 忽略时间顺序,易泄露未来信息 |
| Stratified K-Fold | 类别不平衡数据 | 保持各类比例 | 仍忽略时间顺序 |
| Time Series Split | 时间序列数据 | 防止未来信息泄露 | 训练集大小递减,验证集大小固定 |
| Group K-Fold | 同一客户多次申请 | 避免客户信息泄露 | 分组逻辑需业务定义 |
常见陷阱:在拒绝推断场景中,若将推断标签样本与真实标签样本混合后直接做随机 K-Fold,会导致验证集包含推断噪声,模型评估结果虚高。正确做法是:先按标签来源分层,再在每层内做时间序列交叉验证。
3.4 实战案例:拒绝推断场景下的样本分层
某消费金融公司历史拒绝率 45%,通过客户坏账率 3.2%。建模团队采用以下分层策略:
- 样本划分:将全量申请客户按审批结果分为通过组(真实标签)和拒绝组(推断标签)。
- 时间窗口:以 3 个月为窗口,划分 2022-Q1 至 2023-Q4 共 8 个窗口。
- 分层抽样:在每个窗口内,按风险评分将样本分为 5 个风险桶,每个桶内按 7:2:1 比例分配训练/验证/测试。
- 交叉验证:采用 Time Series Split,每次用前 6 个窗口训练,后 2 个窗口验证,共 3 折。
结果:分层后的模型在测试集上 AUC 为 0.78,各折 AUC 标准差仅 0.015;而未分层模型 AUC 为 0.82 但标准差 0.045,上线后 3 个月 PSI 超过 0.15,模型快速失效。分层策略显著提升了模型的时间稳定性。
3.5 样本分层检查清单
- □ 确认拒绝率是否超过 30%,决定是否引入拒绝推断。
- □ 检查各时间窗口的坏账率、PSI,识别分布漂移窗口。
- □ 按风险等级和时间维度进行分层抽样,确保训练/验证/测试分布一致。
- □ 选择 Time Series Split 或 Stratified K-Fold,避免未来信息泄露。
- □ 拒绝推断样本与真实标签样本分开分层,防止推断噪声污染验证集。
- □ 验证各折模型指标波动是否在可接受范围内(AUC 标准差 < 0.02)。