3. 特征工程基础:特征分类、构造方法与选择原则
在贷后坏样本归因分析中,特征工程是连接原始数据与归因模型的桥梁。高质量的特征能够显著提升模型对逾期客户行为模式的刻画能力,从而精准定位坏账成因。本节从特征分类、构造方法和选择原则三个维度展开,帮助风控分析师建立系统化的特征工程框架。
3.1 特征分类:三大数据源
贷后场景下的特征可归纳为三类:用户画像特征、行为轨迹特征和外部数据特征。三类特征在归因分析中承担不同角色,互为补充。
| 特征类别 | 数据来源 | 典型字段 | 归因价值 |
|---|---|---|---|
| 用户画像 | 申请资料、存量信息 | 年龄、职业、收入、学历、婚姻状况 | 刻画客户基本风险底色,识别“人”的因素 |
| 行为轨迹 | 贷中交易、还款、交互日志 | 还款频次、逾期天数、消费金额、客服通话次数 | 反映客户还款意愿与能力变化,捕捉“事”的演变 |
| 外部数据 | 征信、多头借贷、司法、黑名单 | 征信查询次数、涉诉记录、多头借贷平台数 | 补充客户外部风险信号,验证“环境”影响 |
实践建议:三类特征应联合使用,避免单一维度偏差。例如,仅靠用户画像可能遗漏突发性收入下降,而仅靠行为轨迹可能忽略客户固有的欺诈倾向。
3.2 特征构造方法
特征构造是将原始数据转化为可建模变量的过程。贷后场景中常用的构造方法包括以下五类:
- 统计聚合:对时间窗口内的行为进行计数、求和、均值、标准差、最大值、最小值等计算。例如:近30天还款次数、近7天消费金额标准差。
- 比率与占比:构造相对指标,消除量纲影响。例如:逾期金额/总应还金额、已还款期数/总期数。
- 时间序列衍生:提取趋势、波动性、周期性特征。例如:还款金额的移动平均、逾期天数的环比变化率。
- 交叉组合:将两个或多个特征进行笛卡尔积或逻辑组合。例如:年龄×收入等级、职业×地区。
- 编码转换:对类别特征进行数值化处理。常用方法包括:Label Encoding、One-Hot Encoding、Target Encoding(目标编码)。
贷后场景特别提示:时间窗口的选择直接影响特征有效性。短期窗口(如7天)适合捕捉突发性行为变化,长期窗口(如90天)适合刻画稳定趋势。建议在特征构造时同时保留多个窗口版本,供后续筛选。
3.3 特征选择原则
特征选择的目标是剔除冗余、噪声和过拟合风险,保留对坏样本归因最有解释力的特征子集。以下四项原则是贷后场景中的核心准则:
| 原则 | 核心思想 | 常用方法 | 贷后应用示例 |
|---|---|---|---|
| 相关性原则 | 特征与目标变量(是否坏账)应具有显著统计关联 | 信息价值(IV)、卡方检验、互信息 | IV > 0.02 的特征保留,IV < 0.02 的剔除 |
| 稳定性原则 | 特征分布在不同时间窗口应保持稳定 | 群体稳定性指标(PSI)、特征分布对比 | PSI < 0.1 的特征通过稳定性检验 |
| 冗余消除原则 | 避免特征间高度共线性,降低模型方差 | 方差膨胀因子(VIF)、相关系数矩阵 | VIF > 10 的特征需剔除或合并 |
| 可解释性原则 | 特征含义清晰,便于业务理解和归因追溯 | 业务专家评审、特征含义文档化 | 避免使用黑盒衍生特征(如PCA成分) |
常见误区:不要盲目追求特征数量。在贷后归因场景中,50~80个高质量、可解释的特征通常优于数百个自动化衍生的噪声特征。特征选择应始终以“能否帮助业务定位坏账原因”为最终检验标准。
3.4 特征工程在贷后归因中的落地要点
在实际项目中,特征工程并非一次性工作,而是伴随模型迭代持续优化的过程。以下为关键落地要点:
- 时间窗口对齐:所有特征的时间窗口必须与坏样本定义时间点严格对齐,避免未来信息泄露。
- 缺失值处理:贷后数据常存在缺失,建议对缺失率超过70%的特征直接剔除;对缺失率较低的特征,根据业务含义填充(如还款次数缺失填充0,收入缺失填充中位数)。
- 特征监控:上线后持续监控特征的PSI和IV变化,当特征稳定性或区分度显著下降时,及时回溯特征构造逻辑。
- 文档化:每个特征需记录构造逻辑、窗口参数、缺失处理方式、选择依据,确保归因分析可追溯。
效率工具:在Python中,可使用
featuretools 进行自动化特征衍生,但务必在生成后人工筛选;使用 toad 或 optbinning 进行IV计算和分箱,提升特征选择效率。
# 特征选择示例:基于IV和VIF的快速筛选
import pandas as pd
import numpy as np
from scipy.stats import chi2_contingency
def calculate_iv(data, feature, target):
"""计算单个特征的IV值(离散化后)"""
# 此处为伪代码示意,实际需先分箱
pass
def vif_selection(data, threshold=10):
"""基于VIF逐步剔除共线性特征"""
from statsmodels.stats.outliers_influence import variance_inflation_factor
vif_data = pd.DataFrame()
vif_data["feature"] = data.columns
vif_data["VIF"] = [variance_inflation_factor(data.values, i) for i in range(data.shape[1])]
return vif_data[vif_data["VIF"] < threshold]
特征工程的质量直接决定坏样本归因模型的解释力和稳定性。分析师应始终以“业务可理解、归因可追溯”为第一原则,避免陷入纯技术驱动的特征堆砌陷阱。