特征工程总览:为什么风控需要高阶特征工程?从原始数据到模型性能的桥梁
大家好,我是老张。在金融风控这个行当摸爬滚打了十几年,我见过太多「数据扔进去,模型跑出来」的翻车现场。说实话,很多人以为风控模型的核心是算法,是调参。但我的经验告诉我——特征工程才是真正的胜负手。
你想想看,原始数据就像一堆散落的乐高积木。没有图纸,没有分类,你拼不出任何有价值的东西。高阶特征工程,就是那张图纸,那把剪刀,那个胶水。它把杂乱无章的数据,变成模型能理解的「语言」。
核心观点:特征工程不是锦上添花,而是雪中送炭。没有好的特征,再牛的算法也是白搭。
为什么风控场景尤其需要高阶特征?
金融风控和图像识别、自然语言处理不一样。图像里猫就是猫,狗就是狗。但风控数据里,一个「逾期30天」的用户,可能明天就还钱了,也可能彻底失联。数据本身充满了噪声、缺失、不平衡。
我举个例子。有一次我接手一个信贷项目,原始数据里用户的「收入」字段,有30%是空的。如果直接扔掉这些样本,模型就废了。但如果我们用「职业+学历+地区」做交叉特征,再结合外部数据做插补,就能把缺失率降到5%以下。这就是高阶特征工程的价值。
我的经验:在风控领域,特征工程至少贡献了模型性能的60%。剩下的40%才是算法和调参。别搞反了。
从原始数据到模型性能:这座桥怎么搭?
说白了,特征工程就是一座桥。桥的一头是原始数据——各种表格、日志、埋点、第三方数据。桥的另一头是模型性能——AUC、KS、Gini系数。这座桥怎么搭,决定了你的模型能跑多快、多稳。
我个人习惯把这座桥分成四段:
- 数据清洗与预处理——去噪、补缺、去重。这是地基,地基不稳,后面全白搭。
- 基础特征构建——统计量、聚合特征、时间窗口特征。这是砖块,一块一块垒起来。
- 高阶特征工程——交叉特征、组合特征、时序特征、文本特征、图特征。这是钢筋水泥,让结构更坚固。
- 特征筛选与降维——去冗余、去共线、去无效。这是装修,留下最精华的部分。
嗯,这里要注意。很多人一上来就搞高阶特征,结果数据清洗没做好,模型跑出来全是噪声。我曾经就犯过这个错,花了两周做了一堆交叉特征,结果AUC反而下降了0.02。后来才发现,原始数据里有个字段的取值逻辑是错的。
避坑指南:我曾经因为跳过数据清洗,直接做特征工程,导致模型上线后坏账率飙升。从那以后,我给自己定了个规矩——先洗数据,再做特征,最后建模。顺序不能乱。
高阶特征工程到底「高」在哪里?
普通特征工程,就是算个均值、最大值、最小值。高阶特征工程,是挖掘数据背后的「关系」和「模式」。
举个例子。用户A和用户B,年龄都是30岁,收入都是1万。普通特征工程看,他俩一模一样。但高阶特征工程会发现:用户A的消费集中在深夜,用户B的消费集中在白天;用户A的社交关系里有3个黑名单用户,用户B的社交关系里全是白名单。这些「关系型特征」,才是风控模型真正需要的。
我常用的高阶特征技术包括:
- 时序特征:比如「近30天消费金额的波动率」、「还款日前后3天的行为变化」
- 交叉特征:比如「收入/负债比」、「年龄×职业类型」
- 聚合特征:比如「用户所在地区的平均逾期率」、「设备指纹的共享人数」
- 图特征:比如「社交网络中的PageRank值」、「二度关联中的黑名单占比」
- 文本特征:比如「用户备注中的负面关键词数量」、「地址文本的相似度」
一句话总结:普通特征告诉你「是什么」,高阶特征告诉你「为什么」和「和谁有关」。
一张图看懂特征工程全流程
下面这张图,是我自己总结的特征工程知识体系。每次带新人,我都会先让他们看这张图。你仔细看看,就能明白整个流程的逻辑。
一个真实案例:从原始数据到模型性能
我记得有一次做现金贷的风控模型。原始数据就三张表:用户基本信息表、交易流水表、外部征信查询表。总共也就50多个字段。
如果只做基础特征,比如「近30天交易次数」、「近30天交易金额均值」,模型AUC大概在0.68左右。说实话,这个水平上线就是送人头。
后来我做了几组高阶特征:
- 时序特征:计算了「交易金额的周环比变化率」、「交易时间的熵值」(衡量用户行为是否规律)
- 交叉特征:做了「收入/负债比 × 职业类型」、「年龄 × 婚姻状况 × 是否有房」
- 图特征:基于设备指纹和IP地址,构建了用户关联网络,计算了「二度关联中的逾期率」
你猜怎么着?AUC直接从0.68跳到了0.82。提升了14个百分点。这就是高阶特征工程的威力。
我的建议:别一上来就追求花哨的特征。先做基础特征,把模型跑通。然后一个一个加高阶特征,看哪个真正提升了性能。我习惯用「特征重要性排序」来筛选,每次只保留Top 20的特征。
高阶特征工程的「坑」与「避坑」
做高阶特征工程,有几个坑我踩过,你们千万别再踩:
| 常见坑 | 后果 | 避坑方法 |
|---|---|---|
| 特征维度爆炸 | 模型过拟合,训练时间暴增 | 用PCA、Lasso做降维,或者用特征重要性筛选 |
| 特征穿越 | 模型在线上失效,AUC虚高 | 严格按时间窗口划分训练集和测试集 |
| 特征冗余 | 模型不稳定,解释性差 | 计算特征间的相关系数,去掉相关性>0.9的特征 |
| 缺失值处理不当 | 模型偏差,预测不准 | 根据业务逻辑选择插补方式,不要盲目填0或均值 |
我曾经在一个项目中,因为没注意特征穿越,把「未来30天的还款记录」当成了特征。结果模型在测试集上AUC高达0.95,一上线直接崩了。嗯,这个教训我记了三年。
总结一下
特征工程,说白了就是「把数据变成模型能听懂的语言」。高阶特征工程,就是让模型听懂「潜台词」和「弦外之音」。
从原始数据到模型性能,这座桥不好搭。但只要你掌握了高阶特征工程的思路和方法,你会发现——原来数据里藏着这么多宝藏。
后面几章,我会手把手带你做各种高阶特征。从时序特征到图特征,从交叉特征到文本特征。咱们一步一步来。
公众号:蓝海资料掘金营,微信deep3321