类别不均衡时决策树会有什么问题?
简化版
类别不均衡时,决策树的多数类主导不纯度下降,少数类区域可能不分裂或形成很小、很不稳定的叶。可使用类别/样本权重、分层或分组验证、合适的叶约束与阈值调整,并以 PR-AUC、召回和业务成本评估。
详细版
-
先区分样本比例与错误成本;少数类不一定代价更高,但常需要单独关注。
-
class_weight 改变切分评分,让少数类错误贡献更大。
-
重采样应只在训练折内进行,避免合成或重复样本进入验证集。
-
限制最小叶样本时要防止把稀少正例永远压在多数类叶中。
-
准确率在 1% 正类任务中几乎无信息,应看 PR 曲线和成本。
完整版教学
一、少数类信号容易被平均掉
当正类只有 1%,一个全判负模型也有 99% 准确率。
普通纯度下降按样本占比加权,小规模正类区域带来的改善可能不足以战胜多数类的大切分。
加权把少数类样本在损失中的质量放大,使树愿意为它们建立规则;阈值调整则在树训练后改变召回—精确率权衡。
二、数学机制怎么落到节点上
weighted class probability = sum(weight_i * 1[y_i=k]) / sum(weight_i);PR precision = TP/(TP+FP)。
weighted class probability = sum(weight_i * 1[y_i=k]) / sum(weight_i)
PR precision = TP/(TP+FP)
recall = TP/(TP+FN)
三、带数字的推演
10,000 个样本中 100 个正类。
全判负准确率 99%,召回率却为 0。
若模型找回 70 个正类并误报 140 个,召回 70%,精确率 70/(70+140)=33.3%,这比准确率更能描述效果。
四、方法对比
| 方法/对象 | 核心特点 | 代价或限制 |
|---|---|---|
| Class weight | 训练时强调少数类 | 可能牺牲校准 |
| 过/欠采样 | 改变训练比例 | 信息损失或过拟合 |
| 阈值调整 | 灵活选操作点 | 依赖概率/分数稳定 |
五、从训练到验证的执行链
按主体分层划分 -> 训练折内加权/采样 -> 调树复杂度
-> 验证集画 PR/成本曲线 -> 选阈值 -> 原始分布测试集最终评估
六、边界条件与工程代价
极少正例时,普通分层 K 折仍可能每折只有几个样本,指标方差巨大。
可减少折数、重复交叉验证,并报告置信区间。
过采样改变类别先验,predict_proba 往往不再对应线上发生率。
需要概率校准或先验修正,尤其是概率直接参与金额决策时。
记忆钩子:先用“1% 正类、全判负仍 99%”拆掉准确率幻觉,再讲训练加权、折内采样和预测阈值三层手段。
七、常见误区与追问
-
误区:99% 准确率说明不均衡任务做得很好。 全判多数类也可达到该数值,少数类召回可能为零。
-
追问:class_weight 与过采样等价吗? 某些损失上近似,但树的随机采样和停止条件会造成差异。
-
误区:先做 SMOTE 再划分数据。 合成点会把邻居信息泄漏到验证集。
-
追问:为什么看 PR-AUC? 正类稀少时它更直接反映精确率与召回的权衡。
-
追问:加权后概率还能直接用吗? 通常需在原始分布的独立数据上重新校准。
八、加强记忆
先用“1% 正类、全判负仍 99%”拆掉准确率幻觉,再讲训练加权、折内采样和预测阈值三层手段。
最后一定回到原始分布评估与概率校准。