M2-071M2: Classical Machine LearningClass Imbalance LearningEasy
Mastery:
Class Imbalance Learning: 处理类别不平衡的主要方法有哪些?
📐 Mathematical Definition
⚡ Executive Summary
Core Concept: 重采样(过/欠采样)、代价敏感、阈值调整、集成、异常检测视角。
📌 Key Takeaways
- •先问'指标是否合适'(用 PR-AUC 而非 ROC-AUC)
- •重采样需在 CV 折内做
📐 Mathematical Derivations
五个层次的解法(从数据到决策):① <strong>指标层面</strong>——首先改用对不平衡敏感的指标(PR-AUC、F1、召回@固定精度),而非 accuracy 或 ROC-AUC(它们在不平衡下过于乐观);这是最容易被忽视但最重要的一步。② <strong>数据层面</strong>——<strong>过采样</strong>(复制少数类、SMOTE 合成)或<strong>欠采样</strong>(丢弃多数类);过采样不丢信息但增加训练时间与过拟合风险(复制样本),欠采样快但丢信息;两者都必须在 <strong>CV 折内</strong>做(否则合成/复制的样本会跨越折边界导致泄漏)。③ <strong>算法层面</strong>——<strong>代价敏感</strong>(给少数类更高的损失权重,如 class_weight='balanced')、<strong>Focal Loss</strong>(降低易分类样本的权重)、或专门的不平衡学习方法。④ <strong>决策层面</strong>——<strong>调整阈值</strong>:训练后用验证集选使业务目标(如代价矩阵最小化)最优的阈值,而非默认 0.5。⑤ <strong>问题重构</strong>——把少数类检测视为<strong>异常检测</strong>(单类分类、孤立森林),或用<strong>集成</strong>(BalancedBagging、EasyEnsemble)。
🏭 Production Trade-offs
实践要点:① <strong>过采样 vs 欠采样</strong>——多数场景下<strong>代价敏感/类权重</strong>优于重采样(不改变数据分布、更稳定);若必须重采样,过采样(SMOTE)通常优于欠采样(不丢信息),但 SMOTE 在高维/类别重叠区会生成错误样本。② <strong>SMOTE 的适用与风险</strong>——在少数类近邻间线性插值;适合<strong>数值特征且类别可分</strong>的场景;风险是 (a) 在类别边界生成'侵入'多数类的样本,(b) 高维下近邻不可靠,(c) 对类别特征不适用(需 SMOTE-NC)。③ <strong>不要对验证/测试集重采样</strong>——只在训练折上做,验证/测试集保持原始分布(否则评估失真)。④ <strong>类权重的等价性</strong>——类权重 ≈ 按权重重采样,但更稳定(不改变样本数、无重复);这是首选方案。⑤ <strong>阈值优化的前提</strong>——模型需输出<strong>校准良好的概率</strong>(否则阈值无意义);若模型过自信(如深度网络),应先做温度缩放等校准。⑥ <strong>业务视角</strong>——最终应以业务代价决定权衡(如欺诈检测漏判代价 >> 误判代价,则优先召回)。
⚠️ Common Interview Pitfalls
- ✕对验证/测试集做重采样(评估失真)
- ✕在不平衡数据上用 accuracy 或 ROC-AUC 作为主指标
🎯 Interviewer Follow-ups
- ?为什么重采样必须放进 CV?
- ?过采样与欠采样的取舍?
📚
Associated Knowledge Base Guides & Mindmaps
Explore the comprehensive technical article, exam cards, and global architecture tree.