返回 经典机器学习 思维导图
中文·English
📊 经典机器学习ID: target-encoding

目标编码 Target Encoding

Target Encoding
🎯核心定义
目标编码(Target Encoding)用“该类别下目标均值”编码高基数类别特征(如 user_id、城市、商品 ID)。平滑公式: TE=λ(ni)mean(yi)+(1λ(ni))global_meanTE = \lambda(n_i) \cdot \text{mean}(y_i) + (1 - \lambda(n_i)) \cdot \text{global\_mean},其中置信度权重 λ(ni)=nini+m\lambda(n_i) = \frac{n_i}{n_i + m}——样本量 nin_i 越大越相信组内均值, 平滑参数 mm 控制收缩强度, 防止小样本组的编码被噪声带偏。泄漏风险: 若直接对全量数据求组均值, 训练与验证特征都携带了目标信息(CV 分数虚高、线上崩溃), 这是 TE 最大的坑。解法: OOF (out-of-fold) 编码——对某样本用“不包含它的那一折之外”的数据算均值; CatBoost 更进一步用 Ordered Target Statistics——按时间/顺序只用该样本之前的历史样本计算统计量, 从机制上切断泄漏。
💡使用场景
高基数类别特征 + 树模型(GBDT/LightGBM)与 Kaggle 竞赛的标配; 面试常问“为什么高基数不用 one-hot”“目标编码怎么防泄漏”“m 怎么选”。
解决的核心痛点
One-hot 对高基数特征维度爆炸(100 万 user_id 变成 100 万列)、内存与稀疏性灾难; 组均值编码泄漏目标信息、小样本组过拟合; 平滑收缩 + OOF/Ordered 编码在保留类别-目标关联信息的同时, 把泄漏和过拟合都控制住——CatBoost 正是靠 Ordered 编码取代 one-hot, 才让类别特征直接参与训练。
🎯5 个高频面试考点 (Exam Points)
1
写出平滑目标编码公式 TE=λmean(yi)+(1λ)globalTE = \lambda \cdot \text{mean}(y_i) + (1-\lambda) \cdot \text{global}, λ(ni)=nini+m\lambda(n_i) = \frac{n_i}{n_i+m}; 直观解释 m 与 nin_i 的作用?
2
为什么直接用全量组均值编码会泄漏? 描述具体泄漏路径与 CV 虚高的机理?
3
OOF (out-of-fold) 编码的具体步骤? 与 CatBoost Ordered Target Statistics 的区别?
4
为什么高基数类别特征不用 one-hot 而用 target encoding? 维度、稀疏性、信息量三方面对比?
5
m 平滑参数怎么选? 小样本组不收缩会发生什么(编码方差大、过拟合)?
📖 关联深度指南:📄 ml-math-and-eval-metrics
更新于 2026-08-12
🎯
检验攻克程度:针对「目标编码 Target Encoding」专属刷题排雷
做单选排雷题、推导选项机制,答错自动收录进专属错题本。
🚀 开始本考点专项刷题
上一个知识点Huber 与 Focal Loss下一个知识点数据泄漏

🔗 更多 经典机器学习 知识点卡片

AdaBoost 算法手推Bagging 与随机森林HMM 参数学习 Baum-WelchGBDT 负梯度拟合