4. 特征工程入门:贷后特征分类与衍生方法
贷后预警模型的核心在于从原始数据中提取能够反映借款人还款意愿与还款能力变化的信号。特征工程正是将原始数据转化为模型可用特征的过程,其质量直接决定预警模型的性能上限。本节将系统讲解贷后特征的三大分类体系、特征衍生的核心方法以及时间窗口的选择策略。
4.1 贷后特征三大分类体系
根据数据来源与业务含义,贷后特征可分为行为类、状态类和外部类三大类别。下表从定义、典型指标、更新频率和业务含义四个维度进行对比:
| 特征类别 | 定义 | 典型指标 | 更新频率 | 业务含义 |
|---|---|---|---|---|
| 行为类 | 借款人在贷后期间主动产生的交互与操作数据 | 还款操作次数、APP登录频率、客服咨询次数、提前还款行为 | 日/周级高频更新 | 反映借款人主动履约意愿与资金周转活跃度 |
| 状态类 | 借款人在贷后期间被动形成的账户与信用状态 | 逾期天数、剩余本金、授信使用率、历史最大逾期等级 | 月/季级中低频更新 | 反映借款人当前风险水位与信用健康度 |
| 外部类 | 来自第三方数据源或宏观经济环境的特征 | 多头借贷查询次数、法院被执行记录、行业景气指数 | 周/月级,依赖数据源 | 反映借款人外部信用环境与系统性风险 |
特征分类要点:行为类特征对短期风险变化敏感,适合构建日级预警信号;状态类特征反映长期信用趋势,适合月级模型迭代;外部类特征用于补充信息盲区,尤其在多头借贷和司法风险场景中不可替代。
4.2 特征衍生方法与时间窗口选择
原始特征往往维度单一、信息量不足,需要通过衍生方法构建高阶特征。常用的特征衍生方法包括统计聚合、时序差分、比率构造和交叉组合四大类。
4.2.1 四大特征衍生方法
| 衍生方法 | 操作说明 | 示例 | 适用场景 |
|---|---|---|---|
| 统计聚合 | 在时间窗口内对原始值计算均值、最大值、最小值、标准差、变异系数等 | 近30天还款金额均值、近7天登录次数最大值 | 行为类特征的波动性刻画 |
| 时序差分 | 计算当前值与历史值的差值或变化率 | 逾期天数环比变化、授信使用率周增幅 | 状态类特征的趋势捕捉 |
| 比率构造 | 将两个相关特征相除,消除量纲影响 | 已还本金/应还本金、还款金额/月收入 | 还款能力与还款意愿的归一化度量 |
| 交叉组合 | 将两个或多个特征进行笛卡尔积或逻辑组合 | 逾期天数×多头借贷次数、登录频率×还款操作次数 | 发现非线性交互风险信号 |
4.2.2 时间窗口选择策略
时间窗口的选择决定了特征对风险信号的敏感度与稳定性。窗口过短容易引入噪声,窗口过长则会稀释近期风险变化。以下是不同业务场景下的推荐窗口配置:
- 短期窗口(1~7天):适用于行为类高频特征,如登录频率、还款操作次数、客服咨询次数。用于捕捉突发性风险事件。
- 中期窗口(15~30天):适用于状态类特征的趋势分析,如逾期天数变化、授信使用率波动。用于评估风险恶化速度。
- 长期窗口(60~90天):适用于外部类特征和信用历史特征,如多头借贷查询次数、历史最大逾期等级。用于刻画借款人长期信用画像。
- 多窗口组合:同时使用短、中、长三个窗口的统计量作为特征,让模型自动学习不同时间尺度下的风险信号权重。
实操建议:在贷后预警模型初期,建议优先构建30天窗口的统计聚合特征和7天窗口的时序差分特征。这两个窗口组合在大多数消费信贷场景中表现稳定,且计算成本可控。
4.3 特征工程整体流程
下图展示了从原始数据到模型可用特征的完整特征工程流程,涵盖数据采集、特征分类、特征衍生、时间窗口选择与特征筛选五个核心环节:
4.4 特征衍生代码示例
以下代码展示了在Python中使用Pandas对贷后数据进行特征衍生的典型操作,包含统计聚合、时序差分和比率构造三种方法:
import pandas as pd
import numpy as np
# 示例数据:贷后行为日志
df = pd.DataFrame({
'user_id': ['U001', 'U001', 'U001', 'U002', 'U002'],
'date': pd.to_datetime(['2024-01-01', '2024-01-15', '2024-02-01',
'2024-01-10', '2024-02-05']),
'login_count': [3, 5, 2, 1, 4],
'repay_amount': [1000, 0, 1500, 500, 800],
'overdue_days': [0, 5, 0, 0, 3]
})
# 1. 统计聚合:近30天登录次数均值
df['login_avg_30d'] = df.groupby('user_id')['login_count'].transform(
lambda x: x.rolling(window=2, min_periods=1).mean()
)
# 2. 时序差分:逾期天数环比变化
df['overdue_diff'] = df.groupby('user_id')['overdue_days'].diff().fillna(0)
# 3. 比率构造:还款金额与登录次数的比值
df['repay_per_login'] = df['repay_amount'] / (df['login_count'] + 1e-6)
print(df[['user_id', 'date', 'login_avg_30d', 'overdue_diff', 'repay_per_login']])
避坑提示:在计算时序差分时,务必按用户分组后排序日期,否则会导致跨用户的错误计算。比率构造时需添加极小常数(如1e-6)避免除零错误。
4.5 特征分类与衍生方法对照
不同特征类别适用的衍生方法各有侧重,下表总结了最佳实践组合:
| 特征类别 | 推荐衍生方法 | 推荐时间窗口 | 典型应用场景 |
|---|---|---|---|
| 行为类 | 统计聚合 + 时序差分 | 7天 / 30天 | 登录频率突变检测、还款操作异常监控 |
| 状态类 | 时序差分 + 比率构造 | 30天 / 90天 | 逾期天数恶化趋势、授信使用率攀升预警 |
| 外部类 | 统计聚合 + 交叉组合 | 30天 / 60天 | 多头借贷次数与逾期状态的联合风险评分 |
特征工程是贷后预警模型的基石。掌握特征分类体系、灵活运用衍生方法、合理选择时间窗口,能够显著提升模型对风险信号的捕捉能力。在实际项目中,建议从行为类和状态类特征入手,逐步引入外部类特征,并通过特征重要性评估持续优化特征集。