4. 数据准备与清洗
在PD(违约概率)与TTC(跨周期违约概率)建模中,数据准备与清洗往往占据整个项目60%以上的工作量。模型的上限由数据质量决定,算法只是逼近这个上限。本章围绕四个核心环节展开:违约定义、样本构建、缺失值与异常值处理、数据质量评估,并给出可落地的工程实践。
一、核心原理:违约定义是建模的起点
违约定义直接决定了标签(Label)的生成方式,是PD建模中最关键也最容易被忽视的环节。根据巴塞尔协议与监管实践,违约通常需满足以下任一条件:
- 实质性逾期:债务人逾期超过90天(部分场景为60天或30天,需结合业务口径)。
- 信用减值迹象:银行出于经济或合同原因,对债务人债务进行重组、减免或展期,导致债权人承受损失。
- 破产或类似保护:债务人申请破产、被接管或进入类似法律程序。
在TTC建模中,违约定义还需考虑跨周期一致性:不同经济周期下的违约认定标准应保持稳定,否则TTC会因口径漂移而失真。例如,经济下行期若放宽逾期天数认定,会人为压低违约率,导致TTC被低估。
实践提示:违约定义应形成书面文档,明确逾期天数、金额阈值、重组认定规则,并在建模全流程中保持版本一致。任何口径变更都需回溯重算历史标签。
二、方法流程:从原始数据到建模样本
完整的样本构建流程可归纳为以下步骤:
- 确定观察点与表现期:观察点(Observation Point)是客户被评估的时间点,表现期(Performance Window)是观察点之后用于判定违约的时间窗口,通常为12个月。
- 定义目标变量:根据违约定义生成0/1标签,1表示违约,0表示正常。
- 筛选样本总体:排除已违约客户、排除观察点后新开户客户、排除数据严重缺失客户。
- 构建特征宽表:将客户属性、账户行为、征信记录、交易流水等整合为一行一客户的宽表。
- 划分训练集与验证集:按时间切分(Out-of-Time)优于随机切分,更贴近真实业务场景。
以下是一个样本构建的伪代码示例,展示观察点与表现期的对齐逻辑:
# 样本构建核心逻辑(伪代码)
observation_date = '2023-06-30'
performance_window = 12 # 月
# 1. 筛选观察点前已开户客户
df = df[df['open_date'] <= observation_date]
# 2. 排除观察点前已违约客户
df = df[df['default_date'].isna() | (df['default_date'] > observation_date)]
# 3. 生成标签:表现期内是否违约
df['label'] = ((df['default_date'] > observation_date) &
(df['default_date'] <= observation_date + pd.DateOffset(months=performance_window))).astype(int)
# 4. 时间切分
train = df[df['observation_date'] < '2022-01-01']
test = df[df['observation_date'] >= '2022-01-01']
三、缺失值处理与异常值检测
缺失值处理需区分完全随机缺失(MCAR)、随机缺失(MAR)和非随机缺失(MNAR)。不同缺失机制对应不同策略:
| 缺失类型 | 特征 | 推荐处理方式 |
|---|---|---|
| MCAR | 缺失与任何变量无关 | 均值/中位数填充、删除 |
| MAR | 缺失与其他变量相关 | 多重插补、模型预测填充 |
| MNAR | 缺失与自身值相关 | 单独设缺失指示变量、业务规则填充 |
异常值检测常用方法包括:
- 统计法:3σ原则、IQR四分位距法,适用于近似正态分布。
- 距离法:KNN、LOF局部异常因子,适用于多维特征。
- 业务规则法:如年龄>150、收入为负、逾期天数超过合同期限等,直接判定为异常。
常见误区:直接将异常值删除或替换为均值,可能丢失重要风险信号。例如,极高负债收入比往往对应高风险客户,简单截断会削弱模型区分能力。建议先标记异常,再评估其对模型的影响。
四、数据质量评估与复盘
数据质量评估应覆盖以下维度,并形成量化报告:
- 完整性:关键字段缺失率、样本覆盖率。
- 一致性:同一字段在不同系统中的取值是否一致。
- 准确性:与外部数据源交叉验证,如征信报告与内部记录比对。
- 时效性:数据更新频率是否满足建模要求。
- 分布稳定性:训练集与验证集的特征分布是否发生显著漂移(PSI > 0.1需警惕)。
以下是一个数据质量检查清单,可直接用于项目交付前的自检:
数据质量检查清单
[ ] 违约定义文档已评审并版本锁定
[ ] 观察点与表现期无重叠、无遗漏
[ ] 标签分布合理(违约率与业务经验相符)
[ ] 关键字段缺失率 < 5%,否则需说明处理逻辑
[ ] 异常值已标记并评估影响
[ ] 训练集/验证集时间切分无穿越
[ ] PSI < 0.1,特征分布稳定
[ ] 样本去重完成,无重复客户记录
复盘时需重点关注:标签是否被未来信息污染(Data Leakage)、样本选择偏差是否引入、缺失值填充是否引入人为规律。这些问题在PD与TTC建模中极易导致模型上线后表现大幅衰减。
本章小结:违约定义是标签的根基,样本构建决定模型的适用边界,缺失值与异常值处理影响特征质量,数据质量评估则是交付前的最后一道防线。四者环环相扣,任何一环的疏漏都会在TTC校准阶段被放大。