多分类average='micro'下准确率与精确率等指标相等的原因及公式疑问
多分类micro平均下准确率与精确率/召回率一致的原因
核心结论
在多分类任务中使用average='micro'时,准确率、精确率、召回率以及F1值必然完全相等,这是由micro平均的计算逻辑直接决定的。
公式推导与逻辑拆解
micro平均的核心是先将所有类别的真阳性(TP)、假阳性(FP)、假阴性(FN)分别求和,再基于全局统计量计算指标:
- 全局精确率:
Precision_micro = sum(TP_i) / (sum(TP_i) + sum(FP_i)) - 全局召回率:
Recall_micro = sum(TP_i) / (sum(TP_i) + sum(FN_i)) - 全局准确率:
Accuracy_micro = sum(TP_i) / total_samples
关键的等价关系:
sum(TP_i) + sum(FP_i) = total_samples:所有被模型预测为正例的样本总数,等于总样本数——因为每个样本都会被模型分配到一个类别,即每个样本都对应一个预测结果。sum(TP_i) + sum(FN_i) = total_samples:所有真实标签为正例的样本总数,等于总样本数——因为每个样本都有且仅有一个真实类别。
由此直接推导:
Precision_micro = sum(TP_i)/total_samplesRecall_micro = sum(TP_i)/total_samplesAccuracy_micro = sum(TP_i)/total_samples
三者完全相等,而F1值是精确率与召回率的调和平均,自然也等于同一个数值。
你引用实例的错误修正
你给出的实例中,准确率的计算存在错误:
ttl_TP = 15 + 15 + 45 = 75 ttl_FP = 9 + 5 + 11 = 25 ttl_FN = 5 + 15 + 5 = 25 ttl_samples = 100 # 错误计算 micro-averaging accuracy = 75 / (75 + 25 +25) = 75 / 125
这里的分母错误地重复累加了样本:sum(TP) + sum(FP) + sum(FN)并不是总样本数,正确的准确率分母应为总样本数100,因此正确计算为:micro-averaging accuracy = 75 / 100 = 0.75,与精确率、召回率结果一致。
关于求和等式的澄清
文章提到的∑(TP_i + FP_i + FN_i) = total_samples表述不够严谨,正确的核心逻辑是上述两个等价关系:全局预测正例总数等于总样本数,全局真实正例总数等于总样本数。这才是micro平均下各指标一致的本质原因。
内容的提问来源于stack exchange,提问作者MinjeSeok
相关产品推荐
相关产品推荐

