什么是 平衡准确率(Balanced Accuracy)?
平衡准确率(Balanced Accuracy)是对每个已声明类别分别计算召回率后取不加权平均,使各类别不受样本支持度大小影响而拥有相同贡献。
快速了解
| 规范文档 | 官方规范 |
|---|
工作原理
理解类别均衡权重的等价关系
当每条样本按其真实类别支持度的倒数赋权时,普通加权 Accuracy 与 Balanced Accuracy 等价。这只是评测恒等关系,不代表训练时也应使用相同权重。当前 scikit-learn API把指标定义为逐类 Recall 平均,并另行提供 Chance-adjusted 选项。
保留缺失类别和支持度
已声明类别在测试集中没有样本时,其 Recall 没有定义。静默删除该类别会改变指标覆盖的类别集合,强行填零则回答另一问题。评测前应冻结标签清单,报告每类 Support 与 Recall,并确保测试集覆盖产品承诺处理的每个类别。即使各类权重相同,稀有类别估计仍可能高度不确定。
区分类别均衡与决策成本
Brodersen 等人的原始论文针对不均衡数据上的偏置分类器提出 Balanced Accuracy,并在明确假设下推导其后验分布。类别等权仍不等于业务伤害等权;应按真实误报与漏报成本比较阈值,并补充精确率、校准、工作量与切片证据。
主要特点
- 对每个已声明类别的召回率做等权平均
- 二分类时等于敏感度与特异度的平均
- 减少评测汇总被多数类主导的问题
- 等价于按真实类别频率倒数赋权后的准确率
- 测试样本缺失某类时必须有明确处理策略
- 不会平衡训练数据,也不编码业务特定错误成本
常见用途
- 类别频率差异明显时比较分类器
- 让稀有和常见路由标签具有相同评测影响
- 识别依靠多数类获得虚高准确率的模型
- 类别发生率变化后监控类别均衡表现
- 将全局分数与逐类召回率和不确定性共同报告
示例
Loading code...常见问题
平衡准确率如何计算?
先为每个已声明类别分别计算 Recall,再取不加权算术平均。二分类时就是 Sensitivity 与 Specificity 的平均。结果还应公开类别集合、各类支持度、样本权重和缺失类别策略。
平衡准确率与普通准确率有什么区别?
普通准确率让每条样本贡献相同,因此常见类别影响更大;平衡准确率通过平均逐类召回,让每个真实类别贡献相同。类别支持度相等,或各类召回率恰好一致时,两者才会相等。
平衡准确率能修复不均衡训练数据吗?
不能。它只改变评测结果的聚合方式,不会重采样数据、修改损失、改善标签或修复偏置分类器。训练干预与评测指标是两项独立选择,都需要单独验证。
测试集缺少某个类别时怎么办?
该类别的 Recall 没有定义,因此无法按原类别集合估计 Balanced Accuracy。不要静默删除该类;应补充评测样本,或执行预先声明的处理策略并明确说明目标量已经变化。
平衡准确率足以作为生产发布门禁吗?
不足。它隐藏具体失败类别,并默认各类别同等重要。还应报告混淆矩阵、逐类召回率与精确率、支持度、不确定性、必要的校准或排序指标,以及上线阈值下的真实错误成本。