3. 样本分层理论基础:分层抽样原理、风控中的分层目标

在风控建模中,样本并非均匀分布。好坏样本比例悬殊、不同时间窗口的客群行为差异显著、不同客群的风险模式各不相同。若直接使用原始样本训练模型,模型会偏向多数类,且无法捕捉时间与客群的异质性。样本分层正是为了解决这些问题而引入的核心预处理技术。

3.1 分层抽样原理

分层抽样(Stratified Sampling)是一种概率抽样方法。其核心思想是:先将总体按某个或某几个特征划分为互不重叠的层(Stratum),然后从每一层中独立抽取样本,最终合并为总样本。

分层抽样的数学表达:
设总体被划分为 \(K\) 层,第 \(i\) 层的大小为 \(N_i\),总体大小 \(N = \sum_{i=1}^K N_i\)。
若从第 \(i\) 层中抽取 \(n_i\) 个样本,则总样本量 \(n = \sum_{i=1}^K n_i\)。
常见的分配方式包括:比例分配(\(n_i = n \times \frac{N_i}{N}\))和最优分配(考虑层内方差)。

与简单随机抽样相比,分层抽样具有以下优势:

对比维度 简单随机抽样 分层抽样
样本代表性 依赖随机性,可能遗漏小层 保证每层都有样本
估计精度 方差较大 层内同质时方差显著降低
对少数类的覆盖 容易丢失稀有类别 可强制抽取少数类样本
实施复杂度 低 中等(需先定义分层变量)

3.2 风控中的三大分层目标

在风控特征工程中,分层不是为抽样而抽样,而是为了在后续建模中控制偏差、提升泛化能力。以下三个分层目标是风控场景中最核心的维度:

3.2.1 好坏样本分层

风控数据天然存在严重的类别不平衡。好样本(正常还款)通常占 95% 以上,坏样本(逾期/违约)往往不足 5%。若不进行分层:

  • 模型会倾向于将所有样本预测为“好”,获得高准确率但无实际风控价值。
  • 模型无法学习到坏样本的边界特征,导致召回率极低。

分层策略:在训练集和验证集中,按好坏标签分别进行分层抽样,确保每一批数据中好坏比例保持一致(如 3:7 或 2:8)。

实践建议:分层时不要只做简单的等比例抽样。对于极度稀疏的坏样本(如低于 1%),建议采用过采样(如 SMOTE)或分层加权,在损失函数中为坏样本赋予更高权重。

3.2.2 时间窗口分层

风控模型面临的最大挑战之一是概念漂移。用户的还款能力、欺诈手段、宏观经济环境都会随时间变化。若将不同时间段的样本混在一起训练,模型会学到过时的模式。

分层策略:按时间窗口(如按月、按季度)将样本划分为不同层。常见做法包括:

  • 时间序列交叉验证:以时间顺序划分训练集和测试集,保证测试集时间在训练集之后。
  • 时间分层采样:在训练集内部,按时间窗口分层,确保每个 batch 都包含不同时间段的样本。
  • 衰减权重:对较旧的时间窗口样本赋予较低的权重,让模型更关注近期行为。

3.2.3 客群分层

不同客群的风险模式差异巨大。例如:

  • 新客 vs 老客:新客缺乏历史行为数据,老客有完整的还款记录。
  • 不同产品线:现金贷、消费分期、抵押贷的风险特征完全不同。
  • 不同渠道:线上申请 vs 线下推广,欺诈率差异显著。

分层策略:将客群按业务属性划分为多个子群,分别训练模型或共享底层特征但使用不同的分类头。

注意:客群分层不宜过细。若某层样本量过少(如少于 1000 条),模型无法收敛,此时应考虑合并相似客群或使用迁移学习。
风控样本分层三大目标 原始样本总体 好坏样本分层 时间窗口分层 客群分层 好样本层 坏样本层 近期窗口 中期窗口 远期窗口 新客群 老客群 特定产品 分层目标 通过分层控制类别不平衡、时间漂移和客群异质性,提升模型泛化能力

3.3 分层在模型训练中的实际应用

在风控模型训练流程中,分层通常发生在以下两个阶段:

  1. 数据划分阶段:在将数据集拆分为训练集、验证集、测试集时,按好坏标签进行分层,确保三个集合中的好坏比例一致。
  2. 训练批次生成阶段:在训练过程中,按时间窗口和客群分层生成 mini-batch,避免模型在某个 batch 中只看到单一时间段的样本。
代码示例:使用 sklearn 进行分层抽样
from sklearn.model_selection import train_test_split

# 假设 X 为特征矩阵,y 为标签(0:好样本,1:坏样本)
X_train, X_test, y_train, y_test = train_test_split(
    X, y,
    test_size=0.2,
    stratify=y,          # 按标签分层
    random_state=42
)

# 验证分层效果
print("训练集好坏比例:", y_train.mean())
print("测试集好坏比例:", y_test.mean())

3.4 分层策略的选择矩阵

在实际项目中,并非所有场景都需要同时使用三个分层维度。以下矩阵帮助决策:

业务场景 好坏样本分层 时间窗口分层 客群分层 推荐策略
信贷审批模型(稳定客群) ✅ 必须 ✅ 建议 ❌ 可选 好坏分层 + 时间窗口分层
反欺诈模型(快速变化) ✅ 必须 ✅ 必须 ✅ 建议 三层全量分层
存量客户提额模型 ✅ 必须 ❌ 可选 ✅ 必须 好坏分层 + 客群分层
新客冷启动模型 ✅ 必须 ❌ 可选 ❌ 可选 好坏分层 + 过采样
核心原则:分层不是越细越好。每增加一个分层维度,样本量会被切分得更碎。当某层样本量低于 500 时,应考虑合并或使用分层权重替代硬切分。