4. 特征工程入门:特征分类、提取与初步筛选

在支付风控评分通道中,原始数据(交易流水、设备指纹、用户画像)无法直接输入模型。特征工程是将原始数据转化为模型可理解、可区分的数值化表达的过程。本章聚焦三类核心特征的处理方法、提取技巧与初步筛选策略。

4.1 特征分类:数值型、类别型、时间型

支付风控特征按数据性质可分为三大类,每类对应不同的预处理与编码方式:

特征类型 典型字段 核心问题 常用处理方法
数值型 交易金额、登录次数、设备年龄 量纲差异、长尾分布、异常值 标准化/归一化、对数变换、分箱、截尾
类别型 支付渠道、银行卡BIN、国家代码 高基数、无序/有序、缺失值 独热编码、标签编码、目标编码、频次编码
时间型 交易时间、注册时间、上次登录时间 周期性、趋势性、时间间隔 时间戳拆解、周期特征、滑动窗口统计
实战提示: 支付风控中,金额类特征通常呈现严重右偏分布(大量小额+少量大额)。直接使用原始金额会导致模型对大额样本过拟合。建议先做 log(1+x) 变换,再结合分箱(如 0-100, 100-1000, 1000-10000, 10000+)生成离散特征。

4.2 特征提取方法

特征提取是从原始数据中构造新特征的过程,是风控模型效果提升的关键环节。以下为支付场景最常用的三种提取方法:

4.2.1 聚合统计特征

基于用户、设备、IP 等维度,在历史时间窗口内做统计聚合:

  • 窗口长度: 过去 1 小时、24 小时、7 天、30 天
  • 统计量: 交易次数、金额总和、金额均值、金额标准差、最大/最小值
  • 比率特征: 失败率、退款率、大额交易占比
# 示例:计算用户过去24小时交易次数与金额均值
import pandas as pd

df['tx_time'] = pd.to_datetime(df['tx_time'])
df = df.sort_values(['user_id', 'tx_time'])

# 滑动窗口聚合
df['tx_count_24h'] = df.groupby('user_id')['tx_id'].transform(
    lambda x: x.rolling('24h', min_periods=1).count()
)
df['amt_mean_24h'] = df.groupby('user_id')['amount'].transform(
    lambda x: x.rolling('24h', min_periods=1).mean()
)

4.2.2 时序与周期特征

从时间戳中提取周期性信号,捕捉异常交易时段:

  • 基础拆解: 小时、星期几、是否周末、是否节假日
  • 周期编码: 使用 sin/cos 变换处理小时、月份等循环变量
  • 间隔特征: 当前交易距上次交易的时间间隔(秒/分钟)
# 时间拆解与周期编码示例
df['hour'] = df['tx_time'].dt.hour
df['day_of_week'] = df['tx_time'].dt.dayofweek
df['is_weekend'] = df['day_of_week'].isin([5, 6]).astype(int)

# 周期编码:将小时映射到单位圆
df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 24)
df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 24)

4.2.3 交叉组合特征

将两个或多个特征组合,捕获非线性交互关系:

  • 类别×类别: 支付渠道 × 国家代码 → 新类别
  • 数值×数值: 金额 × 设备年龄 → 交互项
  • 类别×数值: 按支付渠道分组后的金额均值
效率建议: 交叉组合特征数量会随原始特征数平方增长。建议先通过业务经验锁定 5-10 组高潜力交叉对,避免维度爆炸。例如:“支付渠道 × 是否跨境” 比 “支付渠道 × 浏览器版本” 更有风控区分度。
支付风控特征提取方法全景 原始交易数据 聚合统计特征 时序与周期特征 交叉组合特征 窗口内交易次数 金额均值 / 标准差 失败率 / 退款率 最大 / 最小金额 小时 / 星期几 是否周末 / 节假日 sin/cos 周期编码 交易间隔时间 渠道 × 国家 金额 × 设备年龄 渠道分组金额均值 IP × 支付方式

4.3 特征重要性初步筛选

特征提取后通常会产生数百维特征,直接建模会导致过拟合与计算开销。需通过初步筛选保留高区分度特征。常用方法分为三类:

4.3.1 过滤法(Filter)

独立于模型,基于统计指标快速排序:

  • 方差阈值: 删除方差接近 0 的常值特征
  • 相关系数: 计算特征与目标变量(是否欺诈)的 Pearson 或 Spearman 相关系数
  • 信息价值(IV): 风控领域经典指标,IV > 0.02 为弱预测力,> 0.1 为中等,> 0.3 为强

4.3.2 包裹法(Wrapper)

以模型效果为评价标准,迭代搜索最优特征子集:

  • 递归特征消除(RFE): 每次训练后删除权重最小的特征,递归至指定数量
  • 前向/后向搜索: 逐步添加或删除特征,监控 AUC 或 KS 变化

4.3.3 嵌入法(Embedded)

在模型训练过程中自动完成特征选择:

  • 树模型特征重要性: LightGBM / XGBoost 输出的 feature_importance(gain / split)
  • L1 正则化(Lasso): 将不重要特征的系数压缩为 0
避坑指南: 支付风控中,不要仅依赖 IV 值筛选特征。某些高 IV 特征(如“交易金额=0”)可能只在特定样本中有效,泛化能力差。建议将 IV 筛选与树模型重要性交叉验证,保留两者均排名靠前的特征。
特征重要性初步筛选流程 原始特征集(N维) 过滤法(Filter) 方差阈值 / 相关系数 / IV 包裹法(Wrapper) RFE / 前向搜索 / 后向搜索 嵌入法(Embedded) 树模型重要性 / L1正则 交叉验证:保留 Top-K 特征 最终特征子集(M维)

4.4 实战要点总结

阶段 核心动作 输出产物 常见陷阱
特征分类 识别数值/类别/时间型,确定预处理策略 特征类型清单 将有序类别(如风险等级)当作无序类别处理
特征提取 聚合统计、周期编码、交叉组合 扩展特征集(通常 50-200 维) 窗口大小选择不当导致数据泄露
初步筛选 过滤法快速降维 + 嵌入法精排 Top 20-50 特征子集 仅依赖单一指标(如 IV)忽略特征稳定性
推荐工作流: 先使用过滤法(IV + 方差阈值)将特征从 200 维降至 80 维,再训练 LightGBM 获取 feature_importance,保留 Top 30 维进入模型训练。此流程在保持 AUC 的同时,训练时间可缩短 60% 以上。