高基数类别特征如何处理?
简化版
高基数类别特征可用原生类别模型、折外目标编码、频数/哈希编码或 embedding;选择取决于样本量、冷启动和模型类型。最大风险是 ID 记忆、目标泄漏、OOV 和内存爆炸。
详细版
-
整数 Label Encoding 不应让无序 ID 获得虚假大小。
-
one-hot 维度随类别数增长并产生稀疏性。
-
目标编码必须折外且做平滑。
-
哈希固定维度但产生不可逆碰撞。
-
Embedding 需要足够交互才能学稳稀有类别。
完整版教学
一、压缩类别空间时要控制方差
每类样本少时,任何类别专属统计或向量都方差高。
合并稀有类、平滑或共享表示是在个性化与证据量之间折中。
用户 ID 可能让离线随机切分极高,却无法泛化到新用户;评估必须包含 unseen-category 或时间外切片。
二、底层机制与公式
smoothed_target=(n_c*mean_c+alpha*global_mean)/(n_c+alpha)
hash_bucket=hash(category) mod B
三、带数字的推演
某类别仅 2 条且正例率 100%,全局率 10%,α=20,平滑值为 (2×1+20×0.1)/22≈0.182,不会直接记成 1.0。
四、方案对比
| 方案/对象 | 核心特点 | 代价或边界 |
|---|---|---|
| 折外目标编码 | 紧凑、监督信号强 | 泄漏风险 |
| Hashing | 固定维度、支持新值 | 碰撞且难解释 |
| Embedding | 表达交互相似性 | 训练和服务成本高 |
五、执行流程
统计基数/频数 -> 按主体时间切分 -> 选编码并折内 fit
-> 单列/组合消融 -> 检查新类别切片 -> 固化映射与回退
六、边界条件与工程代价
高基数代理标识可能泄露地域、设备或用户身份,除了泛化还需评估隐私与公平风险。
线上字典版本不一致会让整数映射错位;编码器与模型必须作为同一版本资产发布。
记忆钩子:处理高基数先问“每类有多少证据、线上会有多少新值”。
七、常见误区与追问
-
误区:LabelEncoder 后可直接当连续特征。 编号顺序没有业务含义。
-
追问:目标编码如何防泄漏? 训练集用 OOF,验证/测试只用训练统计。
-
误区:哈希没有词表所以没有问题。 碰撞会混合不同类别信号。
-
追问:如何评估冷启动? 单独报告未见类别和新实体指标。
-
追问:稀有类为何要平滑? 少量样本的类别估计方差极大。
八、加强记忆
处理高基数先问“每类有多少证据、线上会有多少新值”。
编码只是压缩手段,折外、平滑、OOV 与版本才决定是否可靠。