先说说我对特征工程的理解:它不是锦上添花,而是信用评分模型的半条命。 很多刚入行的同学总觉得算法选得好就万事大吉,可我在真实项目里吃过亏——原始数据直接丢进 XGBoost,AUC 看着还行,一上线坏账率直接报警。后来一查,原来是几个异常值把分箱逻辑全带偏了。从那以后,我每接手一个信贷项目,第一件事就是老老实实做特征工程。
1. 特征工程概述:概念、目的与信用评分应用
什么是特征工程?
说白了,就是把原始数据「翻译」成模型能听懂的语言。原始数据可能是客户填的收入金额、征信报告里的逾期记录、甚至是手机 APP 上的行为日志。这些数据又脏又乱——有空值、有异常、有单位不统一、有类别太多。特征工程就是一套方法论,帮你把这些原材料加工成干净、有意义、数值合理的特征变量。
我个人的习惯是把它拆成四个步骤:
- 清洗 — 处理缺失、异常、重复
- 变换 — 归一化、对数、分箱、独热
- 构造 — 基于业务逻辑合成新特征(比如收入负债比)
- 选择 — 从几十个特征里挑出最有效的那些
你想想看,如果跳过这些直接建模,模型就像用带沙子的润滑油 — 跑起来倒是快,但迟早要出问题。
为什么需要特征工程?
信用评分这个场景尤其敏感。我记得刚入行的时候,师傅跟我说:「模型不准,最多亏钱;特征不对,可能违规。」
特征工程的目的,我总结成三个层次:
| 层次 | 目标 | 在信用评分中的具体体现 |
|---|---|---|
| 1. 数据可用性 | 让缺失、异常不干扰模型 | 比如年收入字段空了 20%,不能直接删,也不能随便填 0,得分析缺失模式 |
| 2. 区分能力 | 放大好客户与坏客户之间的差异 | 收入绝对值区分度弱,但「收入/当地平均收入」的比值往往更有效 |
| 3. 模型稳定性 | 让特征在不同时期表现一致 | 有些特征在样本外季节波动大,必须做时序对齐 |
一个真实的直觉: 我在某消费金融公司做过一次对比实验。同样用逻辑回归,只做了最简单的分箱和一热编码,KS 只有 0.28;加上基于业务经验的组合特征(如「近 6 个月循环额度使用率」「最近一次逾期距今月数」),KS 直接跳到 0.42。特征工程的价值,有时候比换算法更直接。
特征工程在信用评分中的关键角色
信用评分本质上是个分类问题:预测客户在未来一段时间内是否会违约。但你拿到手的原始数据,往往离这个目标很远。举个例子:
- 「年龄」是个连续字段,但模型通常更喜欢分段——20~25 岁的违约率通常高于 35~45 岁,分箱能直接捕捉这个非线性关系。
- 「历史逾期天数」是个数字,但「逾期天数方差」可能更重要——稳定小逾期 vs 突然大逾期,背后的人的行为模式完全不同。
- 「查询征信次数」本身有意义,但除以「总授信额度」得到「查询密度」,才是风控专家真正关心的指标。
这些业务判断,模型自己学不出来。特征工程就是你作为分析师和工程师,把业务知识「喂」给模型的手段。
信用评分特征工程的典型流程
下面这张图是我自己在项目里用的标准流程,每次开新模型都照着走一遍:
注意:图中「特征选择」这一步千万别省。 我曾经在一个项目里造了 200 多个特征,扔进模型后 AUC 反而下降了 3 个点。后来才发现很多特征相互高度相关(比如「收入」「信用卡额度」「总授信」),模型学到的是冗余噪声。所以我现在每步都要做 IV 和相关性过滤。
避坑:信用评分特征工程的三个常见误区
- 误区一:特征越多越好 — 不是的。冗余特征不仅增加计算成本,还会让模型变「胖」、泛化能力变差。我一般用 LASSO 或者前向搜索控制特征数在 20~40 之间。
- 误区二:分箱越多越精细 — 我曾经把一个年龄特征分了 15 个箱,结果在验证集上频率都是个位数,KS 反而跌了。信用评分讲究稳定,每个箱至少要覆盖 5% 的样本。
- 误区三:忽视时间变量 — 征信数据里「最近一次信贷行为距今月数」比「历史总逾期次数」更有价值。为什么?时间越近的行为信息量越大。我有个血的教训:早期模型用「近 12 个月逾期次数」替代了「历史总逾期次数」,KS 提升了 0.05,坏账率下降 2%。
小结
特征工程,说白了就是帮信用评分模型「看到」业务真相。它的目的不是炫技,而是让模型学到稳定、可解释、符合监管要求的规律。我自己的项目经验告诉我:80% 的模型效果提升来自特征工程,而不是算法调参。所以从这个课程一开始,我们就得把地基打扎实。
一句可以写在工位上的话: 数据和特征决定了模型的上限,而算法只是在逼近这个上限。每次建模前,先问自己一句——特征工程做透了吗?