4. 特征工程概念
特征工程是信用评分模型开发中最关键、最耗时的环节。原始数据(如交易流水、客户信息表)无法直接输入模型,必须经过一系列转换、清洗和构造,生成具有预测能力的特征变量。特征工程的质量直接决定了模型性能的上限——“数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限”。
4.1 特征工程定义
特征工程(Feature Engineering)是指利用领域知识和数学变换,从原始数据中提取、构造、选择最能反映问题本质的特征变量的过程。在SQL信用评分场景中,特征工程通常包含以下四个子任务:
- 特征提取(Feature Extraction):从原始表(如交易流水、申请信息)中通过聚合、窗口函数、条件计数等方式生成新字段。
- 特征构造(Feature Construction):基于已有特征通过四则运算、比率、分箱、交叉组合等方式创建高阶特征。
- 特征选择(Feature Selection):从大量候选特征中筛选出与目标变量(如逾期标签)相关性高、冗余度低的子集。
- 特征变换(Feature Transformation):对数值型特征进行标准化、对数化、WOE编码等处理,使其满足模型假设。
ROW_NUMBER、LAG、SUM OVER)和聚合函数,可以高效生成时序特征和汇总特征。
4.2 特征类型
信用评分模型中的特征按数据性质可分为三大类:数值型、类别型和时序型。每种类型在SQL提取方式和模型适用性上存在显著差异。
| 特征类型 | 定义 | SQL提取示例 | 信用评分典型特征 |
|---|---|---|---|
| 数值型 | 连续或离散的数值,可进行四则运算 | AVG(amount) OVER (PARTITION BY user_id) |
近6个月平均消费金额、年龄、收入 |
| 类别型 | 有限个离散取值,无天然顺序 | CASE WHEN channel='APP' THEN 1 ELSE 0 END |
婚姻状况、职业类型、学历等级 |
| 时序型 | 包含时间顺序的序列数据,关注趋势和周期性 | LAG(amount,1) OVER (PARTITION BY user_id ORDER BY trans_date) |
近3个月消费金额环比变化、还款间隔天数 |
4.2.1 数值型特征
数值型特征是信用评分模型中最常见的输入。在SQL中,数值型特征通常通过聚合函数(SUM、AVG、MAX、MIN、COUNT)和窗口函数生成。需要注意:数值型特征可能存在长尾分布(如收入、交易金额),在建模前通常需要做对数变换或分箱处理。
4.2.2 类别型特征
类别型特征在SQL中通常通过CASE WHEN或DECODE转换为哑变量(Dummy Variables)。在信用评分中,类别型特征需要特别注意稀疏类别问题——当某个类别的样本量过少时,应合并到“其他”类别,避免过拟合。常用的编码方式包括:独热编码、WOE编码(信用评分专用)、目标编码。
4.2.3 时序型特征
时序型特征是信用评分模型区别于传统评分卡的重要特征类型。通过SQL的LAG、LEAD、ROW_NUMBER等窗口函数,可以提取:
- 趋势特征:近3个月消费金额的移动平均、斜率
- 波动特征:交易金额的标准差、变异系数
- 间隔特征:两次还款之间的天数、最近一次交易距今的天数
- 周期性特征:周末/工作日消费比例、月初/月末还款行为差异
4.3 特征质量评估标准
在信用评分项目中,特征数量可能从几十个到上千个不等。如何评估一个特征的好坏?以下五个维度是业界通用的评估标准:
| 评估维度 | 定义 | 信用评分中的量化指标 | SQL可计算性 |
|---|---|---|---|
| 预测能力 | 特征区分好坏客户的能力 | IV(信息值)、卡方检验、AUC | 部分可算(IV需分箱后计算) |
| 稳定性 | 特征分布随时间变化的程度 | PSI(群体稳定性指标) | 可算(按月/按周计算分布差异) |
| 覆盖率 | 特征非空值的比例 | 缺失率 = 缺失数 / 总样本数 | 可算(COUNT(*) / COUNT(feature)) |
| 单调性 | 特征值与坏账率之间是否存在单调关系 | 分箱后坏账率单调递增/递减 | 可算(分箱后计算每箱坏账率) |
| 可解释性 | 特征的业务含义是否清晰 | 业务专家评审、逻辑回归系数符号 | 不可直接计算(需人工判断) |
4.3.1 预测能力——IV值
IV(Information Value,信息值)是信用评分中最常用的特征筛选指标。IV值越高,说明特征区分好坏客户的能力越强。经验阈值如下:
- IV < 0.02:无预测能力,建议剔除
- 0.02 ≤ IV < 0.1:弱预测能力
- 0.1 ≤ IV < 0.3:中等预测能力
- IV ≥ 0.3:强预测能力(需注意过拟合风险)
WITH bin_stats AS (
SELECT
bin,
SUM(CASE WHEN target = 1 THEN 1 ELSE 0 END) AS bad_cnt,
SUM(CASE WHEN target = 0 THEN 1 ELSE 0 END) AS good_cnt
FROM feature_table
GROUP BY bin
),
total_stats AS (
SELECT
SUM(bad_cnt) AS total_bad,
SUM(good_cnt) AS total_good
FROM bin_stats
)
SELECT
SUM((bad_cnt/total_bad - good_cnt/total_good) *
LN((bad_cnt/total_bad) / (good_cnt/total_good))) AS iv_value
FROM bin_stats, total_stats;
4.3.2 稳定性——PSI值
PSI(Population Stability Index,群体稳定性指标)衡量特征在训练集和验证集(或不同时间窗口)之间的分布差异。PSI < 0.1 表示特征稳定,0.1-0.25 表示轻度偏移,> 0.25 表示严重偏移,需要重新训练或剔除特征。
4.3.3 覆盖率与缺失值处理
在信用评分中,缺失率超过50%的特征通常会被直接剔除,除非该缺失本身具有业务含义(如“从未申请过贷款”本身就是一种行为模式)。SQL中可以通过SUM(CASE WHEN feature IS NULL THEN 1 ELSE 0 END) / COUNT(*)快速计算缺失率。
4.3.4 单调性检验
对于逻辑回归评分卡,特征与坏账率之间应保持单调关系。如果某个特征的分箱坏账率呈现“先升后降”或“先降后升”的非单调模式,通常需要重新分箱或进行变换。SQL中可以通过分箱后按箱号排序,检查坏账率是否单调递增或递减。