M2-026M2: Classical Machine LearningDecision TreesHard
Mastery:
Decision Trees: 如何处理缺失值与类别特征?对比常见做法。
📐 Mathematical Definition
⚡ Executive Summary
Core Concept: 缺失值可用代理分裂(CART)、按缺失率分流、或缺失指示变量;类别特征可用 one-hot、目标编码、或原生类别分裂(LightGBM/CatBoost)。
📌 Key Takeaways
- •目标编码需交叉拟合防泄漏
- •高基数类别 → 哈希/嵌入/计数编码
📐 Mathematical Derivations
<strong>缺失值处理</strong>:① <strong>代理分裂(CART)</strong>——对每个主分裂,额外学若干'代理分裂'(用与主特征最相关的其他特征),当主特征缺失时用代理分裂决定走向;优点是保留样本且利用特征相关性,缺点是计算复杂。② <strong>默认方向(XGBoost/LightGBM)</strong>——训练时为每个分裂学习'缺失样本走左还是走右'(按哪边损失更小),推理时缺失样本按该默认方向走;实现简单且效果常优于简单填充。③ <strong>填充 + 指示变量</strong>——用均值/中位数/模型预测填充,并额外加一个'是否缺失'的二值特征(当缺失有信息时有效)。④ <strong>按缺失分流</strong>——把缺失作为一个独立的类别分支。
🏭 Production Trade-offs
<strong>类别特征处理</strong>:① <strong>one-hot</strong>——适合低基数(<10–20 类),高基数会导致维度爆炸与稀疏,且树在每个 one-hot 列上只能做'是/否'分裂(效率低)。② <strong>目标编码(target/mean encoding)</strong>——用类别对应的目标均值替代,需<strong>交叉拟合</strong>(在 K 折内用其他折的均值编码本折,防止标签泄漏)+ 平滑(向全局均值收缩,尤其对低频类别)。③ <strong>原生类别分裂(LightGBM/CatBoost)</strong>——LightGBM 用'按类别目标均值排序后分裂'(many-vs-many 分裂),CatBoost 用 <strong>ordered target statistics</strong>(按时间/随机顺序只用'过去'样本统计)从原理上避免泄漏,且用对称树加速。④ <strong>嵌入</strong>——深度模型中对高基数类别学嵌入向量(如推荐系统中的 item embedding)。⑤ <strong>计数/频率编码</strong>——用类别出现频次作为特征,简单且不泄漏,但信息量有限。
⚠️ Common Interview Pitfalls
- ✕对高基数类别用 one-hot(维度爆炸 + 分裂低效)
- ✕目标编码不做交叉拟合(严重标签泄漏)
🎯 Interviewer Follow-ups
- ?目标编码如何防止泄漏?
- ?为什么 LightGBM 能直接处理类别特征?
📚
Associated Knowledge Base Guides & Mindmaps
Explore the comprehensive technical article, exam cards, and global architecture tree.