二分类任务:类平均准确率与整体准确率为何不相等?
为啥整体准确率和两类“准确率”的平均值不相等?
哈哈,这个问题其实是踩了分类任务里指标定义的坑——你混淆了整体准确率和**精确率(Precision)**的概念,我给你拆解清楚:
先明确三个核心指标的计算逻辑
整体准确率(Overall Accuracy):这是最直观的指标,就是所有测试样本里被模型正确分类的比例。公式是:
整体准确率 = (正确分类的类别1样本数 + 正确分类的类别2样本数) / 总样本数因为你说样本均衡(两类数量一样),假设每类各有N个样本,总样本就是2N,那整体准确率也可以写成:
整体准确率 = (TP + TN) / 2N这里TP是类别1被正确分类的数量,TN是类别2被正确分类的数量。
你说的“单独测试每类的准确率”:其实这不是准确率,而是精确率——它衡量的是“模型预测为某类的样本里,真正属于该类的比例”。比如:
- 类别1的精确率 =
TP / (TP + FP),其中FP是把类别2误判成类别1的样本数 - 类别2的精确率 =
TN / (TN + FN),其中FN是把类别1误判成类别2的样本数
- 类别1的精确率 =
而如果是“某类样本被正确分类的比例”,那叫召回率(Recall):
- 类别1的召回率 =
TP / N - 类别2的召回率 =
TN / N
这两个的平均值,在样本均衡的情况下,会和整体准确率完全相等——因为(TP/N + TN/N)/2 = (TP+TN)/2N,和整体准确率的公式一致。
- 类别1的召回率 =
为啥你的数值差这么多?
你计算的是两类精确率的平均值,而不是召回率的平均值。这俩指标关注的维度完全不同:
- 整体准确率看的是“所有样本的分类正确率”,不管模型把样本预测成哪类,只要分对就算数;
- 精确率看的是“模型说某类的样本里,真的是该类的比例”,它关注的是模型预测结果的“精准度”,而非整体的正确率。
举个和你数据匹配的简化例子:假设每类各有1000个样本,总样本2000个。整体准确率79.87%,意味着正确分类的总共有1597个(798+799左右)。而类别1的精确率73.41%,说明模型预测为类别1的样本里,73.41%真的是类别1;类别2的精确率63.31%,说明模型预测为类别2的样本里,63.31%真的是类别2。这时候精确率的平均和整体准确率自然没有直接关联,数值差异就出现了。
一句话总结
你把“精确率”当成了“单独测试每类的准确率”,这俩不是一回事。只有当你计算的是两类召回率的平均值时,在样本均衡的情况下,才会和整体准确率相等。
内容的提问来源于stack exchange,提问作者Crista23
相关产品推荐
相关产品推荐

