决策树如何处理不同错误成本?
简化版
错误成本不对称时,决策树可在训练中使用类别/样本权重改变切分与叶预测,也可在概率较可信时按成本矩阵调整决策阈值。前者改变模型学到的边界,后者只改变决策规则,两者不能混为一谈。
详细版
-
先定义成本矩阵,例如漏诊 FN 成本 10、误报 FP 成本 1。
-
class_weight 使高成本样本对节点不纯度和叶分布贡献更大。
-
后处理阈值根据条件风险选择动作,不必固定 0.5。
-
阈值法依赖概率校准;概率失真时理论最优阈值也会失效。
-
评估应报告总成本、召回、精确率和不同成本假设下的敏感性。
完整版教学
一、业务目标是最小化期望损失
准确率默认每种错误代价相同,但欺诈漏检和正常用户误拦截显然不同。
成本敏感学习把业务损失显式写进训练或决策。
训练加权适合希望树结构更多关注高成本区域;阈值移动适合已有概率模型并且成本经常变化的场景,更新阈值比重训更灵活。
二、数学机制怎么落到节点上
risk(predict 1) = C_FP * P(y=0|x);risk(predict 0) = C_FN * P(y=1|x)。
risk(predict 1) = C_FP * P(y=0|x)
risk(predict 0) = C_FN * P(y=1|x)
predict 1 if p > C_FP / (C_FP + C_FN)
三、带数字的推演
若 C_FN=9、C_FP=1,在无其他成本时阈值为 1/(1+9)=0.1。
预测正类概率 0.2 的样本虽然低于 0.5,仍应判正,因为漏掉它的期望损失更高。
四、方法对比
| 方法/对象 | 核心特点 | 代价或限制 |
|---|---|---|
| 类别/样本权重 | 改变切分和叶值 | 需重新训练 |
| 阈值移动 | 改变最终决策 | 灵活但依赖校准 |
| 重采样 | 改变训练分布 | 概率需先验修正 |
五、从训练到验证的执行链
明确 FP/FN/拒绝成本 -> 选训练加权或阈值策略 -> 交叉验证
-> 独立集校准概率 -> 计算总成本曲线 -> 按线上容量确定操作点
六、边界条件与工程代价
真实成本可能依赖金额、用户或时间,单一 class_weight 无法表达。
可对每个样本传入损失权重,或建立收益模型直接优化期望价值。
召回提升会增加人工审核量。
若系统每天只能处理 1000 个告警,最终阈值还必须满足容量约束,不能只按理论成本比选择。
记忆钩子:先把成本写成矩阵,再区分“训练时改边界”和“预测时改阈值”。
七、常见误区与追问
-
误区:类别不均衡就一定设置 balanced 权重。 不均衡是频率,成本是决策代价,二者不是同一概念。
-
追问:训练加权与阈值调整有何不同? 前者改变模型边界,后者只改变已有分数的决策点。
-
误区:成本比 9:1 就把正类权重设 9 后仍用 0.5 必然最优。 权重会改变概率含义,仍需在验证集按真实成本选阈值。
-
追问:阈值公式何时成立? 二分类、概率已校准且成本定义完整时成立。
-
追问:如何上线监控? 跟踪每类错误数量、实际损失和审核容量,而非只看准确率。
八、加强记忆
先把成本写成矩阵,再区分“训练时改边界”和“预测时改阈值”。
用 FN=9、FP=1 得到阈值 0.1 的推演最直观,同时提醒概率校准与容量约束。