在机器学习中,平衡准确率(Balanced Accuracy)是衡量分类模型性能的重要指标,尤其适用于类别不平衡的数据集。相比普通准确率(Accuracy),它能更公平地反映模型在少数类上的表现。📊
什么是平衡准确率?
平衡准确率通过以下公式计算: $$ \text{Balanced Accuracy} = \frac{1}{K} \sum_{k=1}^{K} \text{Specificity}_k $$ 其中 $K$ 为类别数,$\text{Specificity}_k$ 是每个类别的召回率(Recall)。📉
为什么使用平衡准确率?
- ✅ 避免因多数类样本过多而掩盖少数类性能
- ✅ 更适合医疗诊断、欺诈检测等场景
- ✅ 可与 ROC曲线 结合使用,全面评估模型
scikit-learn 中的实现
- 导入库
from sklearn.metrics import balanced_accuracy_score
- 计算示例
y_true = [0, 1, 1, 0, 0, 1]
y_pred = [0, 1, 0, 0, 1, 1]
score = balanced_accuracy_score(y_true, y_pred)
print(score) # 输出平衡准确率值
- 多分类场景
from sklearn.metrics import classification_report
print(classification_report(y_true, y_pred, output_dict=True))
注意事项
- ⚠️ 需确保标签顺序一致
- ⚠️ 与 F1 分数、AUC-ROC 需要结合使用
- ⚠️ 适用于二分类和多分类问题
如需深入理解其他评估指标,可参考 ROC曲线教程。