一句话定义:分箱(Binning,也叫离散化 Discretization)是把一个连续取值的特征,按人为或统计规则切成若干区间,再用区间编号代替原始数值的预处理方法。比如把年龄 23、37、58 变成「青年」「中年」「老年」三档。
它为什么能处理非线性
线性模型只认「每增加 1 个单位,输出变化固定」这种关系。但现实里很多关系是弯的:年龄和违约风险可能是 U 形,收入对购买意愿先升后平。硬用线性模型拟合,就得手工加平方项、分段线性项,既麻烦又难解释。
分箱的做法是:每个箱单独估一个权重。这相当于一个分段常数函数——想拐几个弯就切几刀,形状随便你捏。生活里的例子是体检报告的参考区间:转氨酶数值本身意义不大,医生看的是「正常 / 偏高 / 显著偏高」,落入哪一档才对应处置方案。分箱就是把这个「分档」动作写进特征工程。
顺带还有两个好处:极端值被压进端点箱,不再牵着模型跑;缺失值也能单独给一个箱,不用急着插补。
和相邻概念的区别
| 方法 | 输出形态 | 主要目的 | 代价 |
|---|---|---|---|
| 分箱 | 离散区间编号 | 拟合非线性走势、抗异常值 | 箱内信息被抹平 |
| 标准化、归一化 | 仍是连续值 | 统一尺度,让优化更稳 | 不改变关系形状 |
| 独热编码 | 0/1 向量 | 让类别变量能进入模型 | 维度上升,常用于分箱之后 |
| 目标编码 | 每类的目标均值 | 压缩类别维度 | 容易泄漏目标 |
注意:分箱本身只是「切段」,切完之后还要选择怎么编码,独热编码(One-Hot Encoding)和证据权重(Weight of Evidence, WOE)都是常见接法。
切点:省事的地方,也是出问题的地方
一是信息损失。一旦切死,同一个箱里所有值等价。收入 8000 和 12000 被划进同一档,模型再也看不到这 4000 的差别。箱数太少,等于主动欠拟合。
二是边界效应。切点附近两个几乎一样的值,被分到不同箱,模型输出可能突然跳一档。风控里常见的现象是:某客户资料微调了一点,评分直接跨档,业务方追问为什么,其实只是踩线。
三是切点漂移。切点通常来自训练数据的等频分位(等频分箱)或目标分布(有监督分箱),换一批数据,切点就变。如果训练和线上用的不是同一套切点,等于特征定义变了,排查起来非常隐蔽。
实操上有几条经验:切点尽量贴在业务上有意义的整数上(18、60 这类),别用 37.42;切点一旦确定就写进特征流水线并做版本管理;用目标变量挑切点时务必在训练集内做,评估另留数据,否则就是目标泄漏;树模型(如梯度提升树)本来就会自己找切分点,人工分箱帮不上多少忙,主要价值在可解释和稳定;线性模型、逻辑回归受益最明显。
需要提醒的是,各类建模平台对分箱的实现细节并不统一,具体规则以其官方文档为准。
