标准回答
One-Hot 编码
每个类别变成一个 0/1 列,无序、不引入虚假大小关系。适合低基数(如性别、星期)。缺点是高基数下维度爆炸、矩阵稀疏,对树模型不友好。
Target(Mean)编码
用该类别下目标变量的均值替代类别,把高基数压成一列,信息量大。核心风险是目标泄漏——直接用全量统计会把标签信息泄给特征导致过拟合。必须用 K 折交叉/留一或加平滑(向全局均值收缩,低频类别更依赖先验),并只用训练集统计。适合高基数特征(如用户 ID、城市)。
Embedding 编码
在深度模型中为每个类别学习一个低维稠密向量,训练中端到端优化,能捕捉类别间语义相似性,是高基数类别在神经网络中的主流方案。
选择经验
低基数无序 → One-Hot;高基数 + 树模型 → Target 编码(防泄漏);高基数 + 深度模型 → Embedding;有序类别 → Ordinal。CatBoost 等模型内置有序目标编码可直接用。
常见误区
⚠️ 常见踩坑
Target 编码最易踩的坑是数据泄漏——在全量数据上算类别均值会把标签信息泄进特征,必须配合交叉验证折外统计与平滑,否则线下虚高、线上崩盘。
延伸学习
与本题相关的知识库文章、术语、工具与行业资讯。