3. 特征工程总览

特征工程是将原始数据转化为能够最大化机器学习模型性能的特征表示的过程。在催收场景中,原始数据往往包含大量噪声、缺失值和不规则的时间序列,直接输入模型会导致预测偏差。特征工程正是解决这一问题的核心环节。

3.1 特征工程的定义

特征工程(Feature Engineering)是指利用领域知识和数学变换,从原始数据中提取、构造、选择并监控特征,使其更适合机器学习算法学习规律的过程。在催收模型中,特征工程覆盖以下四个维度:

维度 定义 催收场景示例
特征分析 理解数据分布、缺失模式、异常值及与目标变量的关系 分析逾期天数分布、历史还款金额的偏态
特征构造 基于业务逻辑和数学变换生成新特征 构造“近30天联系次数/逾期天数”比率特征
特征选择 从候选特征中筛选出对模型预测贡献最大的子集 使用IV值或特征重要性剔除冗余特征
特征监控 持续跟踪特征稳定性、分布漂移和缺失率变化 监控“承诺还款率”特征的PSI指标

3.2 特征工程在催收模型中的重要性

催收模型与常规信用评分模型存在显著差异:催收数据具有高时效性、强动态性和多源异构的特点。特征工程在以下三个层面发挥关键作用:

  • 提升预测精度:原始字段如“总逾期金额”预测能力有限,但构造出“逾期金额/月收入”比率后,模型对还款意愿的区分度显著提升。
  • 增强模型鲁棒性:通过特征选择剔除噪声特征,减少过拟合风险,使模型在跨期验证中保持稳定。
  • 支撑业务解释:催收业务要求模型输出可解释,特征工程构造的“联系效率”“还款意愿指数”等业务特征,可直接指导催收策略调整。
业务案例:某消费金融公司原始特征仅包含“逾期天数”和“历史还款金额”,模型AUC仅为0.62。经过特征工程构造“逾期天数/历史还款次数”“近7天联系接通率”等12个衍生特征后,AUC提升至0.78,催收回收率提高15%。

3.3 特征工程流程

催收特征工程遵循“分析→构造→选择→监控”的闭环流程,每个阶段都有明确的输入、输出和关键动作:

催收特征工程闭环流程 1. 特征分析 数据分布·缺失·异常 2. 特征构造 衍生·聚合·变换 3. 特征选择 IV·重要性·相关性 4. 特征监控 PSI·漂移·缺失率 闭环迭代机制 监控阶段发现特征漂移 → 触发重新分析 模型效果衰减 → 回溯构造阶段补充新特征 业务规则变更 → 从分析阶段重新评估

3.4 各阶段核心任务详解

3.4.1 特征分析

特征分析是特征工程的起点,核心目标是理解数据质量和识别潜在信号。主要任务包括:

  • 单变量分析:计算每个特征的缺失率、均值、标准差、分位数、偏度、峰度。
  • 目标变量关联分析:计算每个特征与“是否还款”“还款率”等目标变量的IV值、相关系数。
  • 时间稳定性分析:按月份或周度计算特征分布,识别是否存在季节性波动或趋势漂移。
  • 异常值检测:使用箱线图或Z-score方法识别极端值,判断是业务异常还是数据错误。
实战建议:在催收场景中,重点关注“联系次数”“承诺还款金额”等特征的缺失模式。缺失往往不是随机缺失,而是与借款人还款意愿相关,可构造“是否缺失”作为独立特征。

3.4.2 特征构造

特征构造是特征工程中最具创造性和业务价值的阶段。催收场景常用的构造方法包括:

构造方法 描述 催收特征示例
比率特征 两个数值字段相除,消除量纲影响 逾期金额 / 月收入、已还金额 / 总欠款
聚合特征 按时间窗口或分组进行统计聚合 近7天联系次数均值、近30天最大逾期天数
时序特征 从时间戳中提取周期性模式 距离上次还款天数、逾期天数变化率
交叉特征 两个或多个字段组合生成新特征 年龄分组 × 逾期天数分段
文本特征 从催收备注、通话记录中提取NLP特征 承诺还款关键词出现次数、语气强度评分
# 特征构造示例:Python代码片段
import pandas as pd
import numpy as np

# 原始数据
df = pd.DataFrame({
    'overdue_days': [15, 30, 45, 60],
    'monthly_income': [5000, 8000, 6000, 10000],
    'contact_count_7d': [3, 5, 2, 8],
    'promised_amount': [1000, 2000, 0, 5000]
})

# 比率特征
df['overdue_income_ratio'] = df['overdue_days'] / (df['monthly_income'] / 1000)

# 聚合特征(模拟近7天联系频率)
df['contact_efficiency'] = df['contact_count_7d'] / (df['overdue_days'] + 1)

# 交叉特征
df['promise_flag'] = np.where(df['promised_amount'] > 0, 1, 0)
df['risk_segment'] = pd.cut(df['overdue_days'], bins=[0, 30, 60, 999], labels=['low', 'mid', 'high'])

print(df[['overdue_income_ratio', 'contact_efficiency', 'promise_flag', 'risk_segment']])

3.4.3 特征选择

特征选择的目标是从大量候选特征中筛选出预测能力强、冗余度低、稳定性好的特征子集。常用方法分为三类:

方法类别 代表算法 催收场景适用性
过滤法 IV值、卡方检验、方差阈值 快速初筛,适合大规模特征集
包裹法 递归特征消除(RFE)、前向选择 精度高,但计算成本大,适合特征数<100
嵌入法 Lasso回归、树模型特征重要性 兼顾精度与效率,催收模型首选
避坑提示:催收数据中常存在“未来信息泄露”问题。例如,使用“当期是否还款”作为特征预测“未来是否还款”会导致严重的过拟合。特征选择时必须确保所有特征在时间线上严格位于目标变量之前。

3.4.4 特征监控

特征监控是保障模型长期有效的最后一道防线。催收业务环境变化快,特征分布可能因政策调整、客群变化或催收策略变更而发生漂移。监控指标包括:

  • PSI(群体稳定性指标):衡量特征分布在不同时间窗口之间的偏移程度,PSI < 0.1 表示稳定,0.1~0.25 需关注,> 0.25 表示严重漂移。
  • 缺失率变化:监控特征缺失率是否突然升高,可能暗示数据采集链路故障。
  • 特征重要性衰减:定期重新训练模型,对比特征重要性排序是否发生显著变化。
  • 业务规则冲突检测:当催收策略调整后,某些特征(如“催收次数”)的分布可能发生结构性变化,需及时标记。
特征监控指标体系 特征监控 PSI稳定性 缺失率变化 重要性衰减 业务规则冲突

3.5 特征工程流程总结

特征工程不是一次性工作,而是贯穿模型全生命周期的持续迭代过程。在催收场景中,建议按照以下节奏执行:

  1. 初始建模阶段:完成完整的分析→构造→选择流程,建立基线特征集。
  2. 月度监控阶段:计算特征PSI和缺失率,生成监控报告。
  3. 季度复盘阶段:结合模型效果衰减情况,回溯分析阶段,补充或替换失效特征。
  4. 年度重构阶段:当催收策略或客群发生重大变化时,重新执行全流程。
核心原则:特征工程的质量决定了模型效果的上限,而算法只是逼近这个上限。在催收场景中,投入70%的时间做特征工程,30%的时间调参,是经过验证的最佳实践。