3、样本分层策略:全量样本 vs 拒绝推断样本、时间窗口切片、分层抽样与交叉验证

在风控建模中,样本分层是连接原始数据与稳定模型的核心桥梁。本章聚焦于三个实战问题:全量样本与拒绝推断样本的取舍、时间窗口切片对样本分布的影响,以及分层抽样与交叉验证的协同设计。错误的样本分层策略会导致模型过拟合、泛化能力差,甚至上线后快速失效。

3.1 全量样本 vs 拒绝推断样本

风控建模的样本天然存在选择性偏差:只有通过审批的客户才有表现标签(好坏标签),而被拒绝的客户无法观测到真实表现。全量样本仅包含通过客户,拒绝推断样本则通过统计或模型方法为被拒绝客户赋予伪标签。

维度 全量样本(通过客户) 拒绝推断样本(含拒绝客户)
数据来源 历史审批通过的客户 全部申请客户(通过+拒绝)
标签真实性 真实好坏标签 部分真实 + 部分推断标签
样本偏差 高(仅覆盖低风险群体) 低(覆盖全申请人群)
模型适用场景 存量客户风险排序 全量申请客户风险预估
常见方法 直接建模 模糊扩张法、两阶段法、Heckman 校正
实战建议:当拒绝率低于 20% 且通过客户样本量充足时,优先使用全量样本;当拒绝率超过 40% 或业务需要覆盖全量申请人群时,必须引入拒绝推断。拒绝推断的伪标签质量直接影响模型效果,建议使用模糊扩张法(Fuzzy Augmentation)作为基线方案。

3.2 时间窗口切片策略

风控数据具有强时间依赖性,不同时间窗口的样本分布差异显著。常见的时间窗口切片方式包括:

  • 滚动窗口:固定窗口长度(如 6 个月),随时间滑动,适用于在线学习或模型持续更新。
  • 固定截止点:以某个时间点为界,划分训练集(历史)和测试集(近期),适用于离线模型开发。
  • 时间序列交叉验证:按时间顺序划分多个训练/验证对,避免未来信息泄露。
关键指标:时间窗口切片后,需检查各窗口的 坏账率、拒绝率、特征分布稳定性(PSI)。若 PSI > 0.1,说明窗口间分布漂移严重,需考虑分群建模或特征对齐。
时间窗口切片与样本分布漂移示意 时间窗口切片与样本分布漂移示意 窗口 T1 坏账率 2.1% 窗口 T2 坏账率 3.5% 窗口 T3 坏账率 5.8% 窗口 T4 坏账率 7.2% ⚠ 窗口 T1→T4 坏账率上升 5.1%,PSI=0.18,需进行样本分层或特征漂移校正 2023-Q1 2023-Q2 2023-Q3 2023-Q4

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,会导致验证集包含推断噪声,模型评估结果虚高。正确做法是:先按标签来源分层,再在每层内做时间序列交叉验证。
分层抽样 + 时间序列交叉验证流程 分层抽样 + 时间序列交叉验证流程 原始全量样本 步骤1:按风险等级 + 时间分层抽样 保持各层坏账率、时间分布一致 步骤2:时间序列交叉验证(5折) Fold1: T1训练, T2验证 | Fold2: T1+T2训练, T3验证 | ... 输出:稳定评估指标(AUC/KS/PSI) 各折指标波动 < 0.02 视为模型稳定 ⚠ 拒绝推断样本 需单独分层

3.4 实战案例:拒绝推断场景下的样本分层

某消费金融公司历史拒绝率 45%,通过客户坏账率 3.2%。建模团队采用以下分层策略:

  1. 样本划分:将全量申请客户按审批结果分为通过组(真实标签)和拒绝组(推断标签)。
  2. 时间窗口:以 3 个月为窗口,划分 2022-Q1 至 2023-Q4 共 8 个窗口。
  3. 分层抽样:在每个窗口内,按风险评分将样本分为 5 个风险桶,每个桶内按 7:2:1 比例分配训练/验证/测试。
  4. 交叉验证:采用 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)。