为什么非做变量衍生和分箱不可?
先聊个实在的——拿原始字段直接塞模型,十有八九会翻车。我刚开始做风控模型时,就干过这事儿:把用户年龄、收入、历史逾期次数一股脑扔进逻辑回归。结果呢?准确率勉强及格,可泛化性一塌糊涂,换个数据集就崩。后来才发现,问题出在变量本身太“糙”了。你想想看,年龄差一岁真的该等价改变风险评分吗?收入10万和11万,模型不该因为“恰好多1万”就给出完全不同的判断结果。
变量衍生,说白了就是手动或自动地创造更有信息量的特征。分箱呢,则是把连续值切成有业务意义的区间,让模型学会“分段思考”。这两个动作,在传统数据挖掘里已足够重要;搁到图谱数据上,更是绕不开的硬骨头。
图谱数据的“反人类”特性
我做了几年图谱挖掘,遇过最头疼的不是算法调参,而是怎么把图结构变成能喂给ML模型的表格。图谱数据的特殊挑战,概括起来就四个字:结构复杂,表达稀疏。下表列出了几个我实测过无数次的痛点:
| 挑战维度 | 传统表格数据 | 图谱数据 | 我的踩坑记录 |
|---|---|---|---|
| 特征维度 | 列宽固定,每行有值 | 每个节点特征数可能不同 | 曾有张图节点属性长度差异超过100倍 |
| 关系信息 | 无明确关联结构 | 边、路径、子图隐含大量信息 | 直接展开成邻接矩阵导致OOM |
| 稀疏性 | 通常较稠密 | 99%的图结构都是空连接 | 稀疏度99.7%的图,One-hot后零值占满内存 |
| 分布形态 | 假设独立同分布 | 节点间高度依赖,不满足IID | 违反IID假设后AUC虚高30% |
你看,传统那套洗数据的流程套用在图谱上,根本跑不通。所以我处理图数据时,第一步就是做变量衍生——从图结构、邻居属性、路径模式中挖出新特征;第二步再对衍生出来的连续值做自动分箱,既降噪又增强可解释性。
我个人习惯:遇到新图谱数据集,会先跑一遍“度分布 + 属性覆盖率”的快速诊断。如果超过20%的节点度数为零,或者某一属性缺失率>50%,那变量衍生和分箱就是必要的前置步骤,否则模型训出来也是瞎蒙。
我曾经吃过亏:有一次信用评分项目,我直接对原始图节点的“近30天交易金额”做了归一化就入模。结果线上A/B测试时,因为一个小额用户突然转入一笔大额资金,归一化后的特征瞬间漂移,模型直接给出高分。后来加上自动分箱,把金额切成[0-1k,1k-10k,10k-100k,>100k]四个区间,再也没出过这种问题。别轻视分箱的稳定性收益。
什么时候必须做?什么时候可以跳过?
也不是所有图谱任务都需要整套流程。我按数据特点和建模目标,画了一张判断矩阵:
| 数据特点 / 建模目标 | 必须做变量衍生+分箱 | 可以简化 |
|---|---|---|
| 图稀疏度高(>90%空连接) | √ 需要从有限结构榨信息 | × 不做必亏 |
| 节点属性分布严重偏态 | √ 分箱能缓解长尾噪声 | × 直接建模易误导 |
| 解释性要求高(如监管场景) | √ 分箱后每个区间有业务含义 | × 黑盒模型难以通过审计 |
| 图规模极大(千万节点以上) | √ 衍生+分箱可压缩存储 | 如果只是简单图卷积(GCN) |
| 纯图嵌入 + 下游任务简单 | 有时可跳过变量衍生 | 但分箱仍有价值 |
我自己的原则是:除非你确定只做图神经网络(GNN)端到端训练,且不要求可解释性,否则一律先做变量衍生和自动分箱。为什么?因为GNN虽然能学图结构,但它对数值型属性的处理并不比传统分箱高明。而且一旦模型部署后需要调优,分箱后的特征能让你快速定位问题区间——这个优势是黑盒嵌入给不了的。
核心观点:变量衍生解决“特征太少、信息提取不充分”的问题;自动分箱解决“数值过于敏感、分布不稳定”的问题。两个步骤组合,等于给图谱数据穿上了一件合身的“可计算外衣”。