← 返回题目列表

Target Encoding 怎么做才不会数据泄露?

高频 中等 第 14 / 25 题 更新于 2026/09/19
特征工程数据预处理特征选择数据泄露

简化版

目标编码用类别的目标统计替代类别值,能压缩高基数特征,但最危险的是把样本自身标签或验证标签编码进去。训练数据必须用 OOF/逐时间编码,并用全局均值平滑;验证与线上只查训练统计。

详细版

  • 全量类别均值会让稀有类直接暴露标签。

  • OOF 训练编码确保当前行未参与自身统计。

  • 平滑强度按类别样本量收缩。

  • 时间任务使用过去数据累计,不能随机 OOF。

  • 未知类别回退全局均值或层级先验。

完整版教学

一、监督编码必须制造未见样本语义

类别 c 的均值是强预测信号,但训练行若参与分子与分母,相当于把 y 写回 x。

类别只有一个样本时泄漏最明显。

OOF 模拟推理:每行统计来自未包含它的数据。

平滑进一步防少数类别因随机波动获得极端值。

二、底层机制与公式

TE(c)=(n_c*mean_c+alpha*global_mean)/(n_c+alpha)
train TE_i computed from folds excluding i

三、带数字的推演

全局正例率 0.2,类别 A 有 2 条且都为正,α=8,则平滑编码 (2×1+8×0.2)/10=0.36,而不是泄漏式 1.0。

单例类别经 OOF 时通常只能回退先验。

四、方案对比

方案/对象核心特点代价或边界
OOF 目标编码适合普通监督任务实现和计算较复杂
时间累计编码遵守因果顺序早期样本统计稀疏
频数编码无标签泄漏预测力可能较弱

五、执行流程

训练折再分内部折 -> 计算排除当前折的类别统计 -> 拼回训练
-> 全训练统计编码验证/测试 -> 保存映射/先验 -> 线上查表

六、边界条件与工程代价

多分类需为类别生成多维统计或选合适对数几率表示,维度和校准要验证。

编码后再随机切分并不能补救:切分必须先发生,所有统计都在训练边界内计算。

记忆钩子:目标编码的红线是“当前标签绝不能参与当前特征”。

七、常见误区与追问

  • 误区:加一点平滑就不用 OOF。 平滑减弱但不消除自身标签泄漏。

  • 追问:验证集如何编码? 只用对应训练折的统计。

  • 误区:随机 OOF 可用于时间预测。 未来标签仍可能编码过去样本。

  • 追问:未知类别怎么办? 回退全局或上级类别先验。

  • 追问:如何识别泄漏? 单例类别训练分数异常高、验证骤降是典型信号。

八、加强记忆

目标编码的红线是“当前标签绝不能参与当前特征”。

OOF 负责隔离,平滑负责降方差,时间任务还要保证只看过去。