M2-062M2: Classical Machine LearningFeature EngineeringEasy
Mastery:
Feature Engineering: 列举类别特征的常见编码方式及适用场景。
📐 Mathematical Definition
⚡ Executive Summary
Core Concept: one-hot(低基数)、目标编码(高基数)、频率编码、哈希、嵌入(深度学习)。
📌 Key Takeaways
- •高基数 one-hot 导致维度爆炸与稀疏
- •目标编码需交叉拟合防泄漏
📐 Mathematical Derivations
五种编码的适用与权衡:① <strong>One-hot</strong>——每个类别一列 0/1;适合<strong>低基数</strong>(<10–20 类);优点是简单无信息泄漏;缺点是高基数时维度爆炸、矩阵稀疏、且对树模型低效(每个 one-hot 列只能做是/否分裂)。② <strong>目标编码(Target/Mean Encoding)</strong>——用类别对应的目标均值替代;适合<strong>高基数</strong>(如城市、商品 ID);关键是必须<strong>交叉拟合</strong>(在 K 折内用其他折的均值编码本折)与<strong>平滑</strong>(向全局均值收缩:编码 = (n·mean_cat + m·global_mean)/(n+m),n 为类别样本数、m 为平滑强度),否则低频类别的编码会严重过拟合。③ <strong>频率/计数编码</strong>——用类别出现频次;简单、无泄漏,但信息量有限(只反映流行度);常与其他编码组合。④ <strong>哈希编码(Hashing Trick)</strong>——用哈希函数把类别映射到固定维度;优点是无需维护词表、支持流式与未知类别;缺点是哈希冲突;用符号哈希(signed hash)可部分抵消冲突。⑤ <strong>嵌入(Embedding)</strong>——为每个类别学一个稠密向量;适合深度学习与<strong>极高基数</strong>(推荐系统中的商品/用户 ID);能捕捉类别间的相似性,但需足够数据训练。
🏭 Production Trade-offs
实践要点:① <strong>基数与编码的对应</strong>——低基数(<20)→ one-hot;中高基数(20–10⁴)→ 目标编码(带交叉拟合)或频率编码;极高基数(>10⁴)→ 哈希或嵌入。② <strong>目标编码的泄漏机制</strong>——若用全量数据算类别均值,则每个样本的编码都包含了自己的标签(尤其当类别样本少时),模型会过度依赖该特征;交叉拟合模拟了'预测时只有其他样本'的情形。③ <strong>树模型的原生支持</strong>——LightGBM 与 CatBoost 可直接处理类别特征(CatBoost 的 ordered target statistics 从原理上避免泄漏);若用这两个库,可不手动编码。④ <strong>未知类别处理</strong>——线上会出现训练时未见过的类别,需预留'未知'类别或用哈希(哈希天然支持)。⑤ <strong>编码与模型的交互</strong>——线性模型需 one-hot 或目标编码(要显式数值);树模型对编码方式较宽容但目标编码的泄漏风险仍需注意;神经网络宜用嵌入。
⚠️ Common Interview Pitfalls
- ✕对高基数类别用 one-hot(维度爆炸)
- ✕目标编码不做交叉拟合与平滑(严重泄漏)
🎯 Interviewer Follow-ups
- ?为什么高基数不适合 one-hot?
- ?目标编码如何做平滑?
📚
Associated Knowledge Base Guides & Mindmaps
Explore the comprehensive technical article, exam cards, and global architecture tree.