M2-062M2: Classical Machine LearningFeature EngineeringEasy
Mastery:

Feature Engineering: 列举类别特征的常见编码方式及适用场景。

📐 Mathematical Definition
target enc: yˉcat with smoothing\text{target enc}:\ \bar y_{\text{cat}}\ \text{with smoothing}
⚡ 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.

← PreviousM2-061: Dimensionality Reduction: 如何选择降维后的维度?解释方差比例法的思路与局限。📋Back to BankNext →M2-063: Feature Engineering: 为什么要对数值特征分箱?分箱方式有哪些。