2. 基础概念

在风控建模中,模型效果的上限往往不取决于算法有多复杂,而取决于时间维度上的样本组织是否正确。很多团队在离线指标上表现优异,上线后却迅速衰减,根源通常不是模型过拟合,而是样本窗口、观察期与表现期的定义与业务真实决策时点不一致。本节将把这些术语还原为可落地的工程定义。

一、核心原理:用“时间三明治”理解样本结构

任何一个风控训练样本,本质上都由三段连续时间构成:观察期用于采集特征,表现期用于确定标签,样本窗口则是这两者按业务节奏滚动形成的整体集合。可以把它理解为一块“时间三明治”:

  • 观察期(Observation Window):从某个时间点向前回溯的一段时间,用于计算用户在该期间的行为、额度、逾期、设备等特征。例如“申请日前180天内的支用次数”。
  • 表现期(Performance Window):从观察期结束(或申请时点)开始向后的一段时间,用于观察是否发生坏账、逾期、欺诈等目标事件。例如“放款后90天内是否逾期30天以上”。
  • 样本窗口(Sample Window):所有样本的观察起点与表现终点所覆盖的整体时间范围。它决定了模型“见过”的历史跨度,也决定了训练集与验证集如何切分。

关键关系:样本窗口 = 观察期 + 表现期 + 滚动步长。若表现期未结束就纳入样本,标签会被“污染”,这是风控建模中最隐蔽也最致命的数据泄漏之一。

二、方法流程:从业务时点到可训练样本

把业务问题转化为训练样本,通常遵循以下流程:

  1. 确定决策时点:例如授信审批时点、支用申请时点、贷后调额时点。所有特征只能使用该时点之前的信息。
  2. 定义观察期长度:根据业务周期与特征稳定性选择,常见为30/90/180/360天。短期行为用短窗口,长期信用用长窗口。
  3. 定义表现期长度:与风险定义匹配。M1(逾期30天)常用60~90天表现期,M3(逾期90天)常用120~180天。
  4. 滚动生成样本:按固定步长(如每月)滑动观察起点,形成多个时间切片。
  5. 切分训练与验证:按时间先后切分,而非随机切分,确保验证集来自“未来”。

下面是一个典型的样本生成参数配置示例:

sample_config:
  decision_point: "application_date"   # 决策时点
  observation_window: 180              # 观察期:180天
  performance_window: 90               # 表现期:90天
  label_definition: "dpd30_plus"       # 标签:逾期30天以上
  sample_start: "2023-01-01"
  sample_end: "2024-06-30"
  step: "monthly"                      # 按月滚动
  split:
    train: "2023-01 ~ 2024-01"
    valid: "2024-02 ~ 2024-04"
    oot:   "2024-05 ~ 2024-06"

三、时间切分与跨时间验证

时间切分指按时间顺序将样本划分为训练集、验证集和跨时间验证集(OOT,Out-of-Time)。随机切分会让同一用户、同一事件同时出现在训练和验证中,导致指标虚高。跨时间验证则要求验证集完全来自训练集之后的时间段,模拟模型上线后面对“未来客户”的真实场景。

切分方式 数据来源 优点 风险
随机切分 同一时间段随机抽样 样本量大、指标稳定 时间泄漏,高估效果
时间切分 按时间先后划分 贴近上线真实场景 后期样本可能不足
跨时间验证(OOT) 训练期之后独立时间段 检验模型时效性与稳定性 需预留足够表现期
滚动验证 多组时间切片滚动训练 评估多周期稳健性 计算与工程成本高

实践建议:至少保留一个完整的OOT时间段,且OOT的表现期必须已经结束。若OOT的KS或AUC相比训练集下降超过20%,应优先排查时间切分与特征时效问题,而不是急于调参。

四、案例与常见误区复盘

某消费信贷团队曾用“申请日前90天”作为观察期、“放款后30天”作为表现期,样本窗口覆盖2023年全年。模型在随机切分下AUC为0.82,但上线后首月AUC跌至0.68。复盘发现两个问题:其一,随机切分导致同一用户多次申请同时进入训练与验证;其二,表现期仅30天,大量样本在观察期末端尚未成熟,标签被错误标记为“好客户”。

调整方案如下:

  • 将表现期延长至90天,并剔除表现期未结束的样本;
  • 按申请月份滚动生成样本,训练集截至2024年1月,验证集为2024年2~4月,OOT为2024年5~6月;
  • 对观察期特征增加“截至决策时点”的强校验,禁止使用未来支用与还款记录。

调整后OOT的AUC为0.76,虽然低于原随机切分指标,但与上线表现基本一致,模型迭代方向也因此变得可信。

三个高频误区:① 表现期未结束就纳入样本,造成标签泄漏;② 用随机切分替代时间切分,导致指标虚高;③ 观察期与表现期重叠,特征中混入未来信息。任何一项都会让离线评估失去参考价值。

理解这些基础概念后,后续的窗口设计、标签定义与验证策略才有共同语言。样本窗口不是简单的日期范围,而是业务决策节奏在数据上的投影;观察期与表现期的边界,决定了模型究竟在“学什么”和“预测什么”。