分类指标解释

本文详细介绍了二分类问题中的真正例、假正例、假负例和真负例等基本概念,以及Accuracy、F1分数、Recall和Precision等评价指标。在多分类场景下,区分宏平均和微平均的计算方法,强调了在数据不平衡时批处理计算的注意事项。同时,讨论了多标签分类问题的评价策略,包括基于标签和基于样本的评价方式。
摘要由CSDN通过智能技术生成

最基本的四个概念

  1. 真正例(True Positive,TP):真实类别为正例,预测类别为正例。
  2. 假正例(False Positive,FP):真实类别为负例,预测类别为正例。
  3. 假负例(False Negative,FN):真实类别为正例,预测类别为负例。
  4. 真负例(True Negative,TN):真实类别为负例,预测类别为负例。

延申的一些概念:
在这里插入图片描述

比较重要的是Accuracy,F1score, Recall, Precision。
在这里插入图片描述

F1分数(F1-Score),又称为平衡F分数(BalancedScore),它被定义为精确率和召回率的调和平均数。除了F1分数之外,F0.5分数和F2分数,在统计学中也得到了大量应用,其中,F2分数中,召回率的权重高于精确率,而F0.5分数中,精确率的权重高于召回率。

multi-class classification的情况

如果是multi-class classification,我有两个选项:

  • 各个类别分别统计TP/FP/FN/TN,分别计算出每个类别的Accuracy,F1score, Recall, Precision,然后对各个类被进行算术平均,最终得到一组 Accuracy,F1score, Recall, Precision,这就叫做宏平均 (Macro-averaging)。
  • 统计TP/FP/FN/TN的时候不区分类别,最终也就只有一组TP/FP/FN/TN,也就只有一组Accuracy,F1score, Recall, Precision,这就叫做微平均 (Micro-averaging)

Note that if all labels are included, “micro”-averaging in a multiclass setting will produce precision, recall and that are all identical to accuracy.

在这里插入图片描述
在这里插入图片描述
这里考虑的三个类别(1,2,3)只有一个(1)是存在的,那自然微平均的结果就是跟类别1的结果的一样的。

在这里插入图片描述
定义是这样的:
在这里插入图片描述

Binary-class classification的情况

TP/FP/FN/TN,Accuracy,F1score, Recall, Precision指标如果说应用在二分类问题的话,都是很清晰的。
但是,如果大批量的样本,batch wise计算的时候?这个时候,严格的正确的做法是一起统计所有batch的样本,也即是所有的样本的TP/FP/FN/TN,最后再去计算Accuracy,F1score, Recall, Precision。
如果你是批处理的话,对每个批次分别进行计算Accuracy,F1score, Recall, Precision的话,就要对各个批次的结果进行平均,这会导致:

from sklearn import metrics

y_pred = [0, 1, 0, 0]
y_true = [0, 1, 0, 1]

print(metrics.confusion_matrix(y_true, y_pred))
print(metrics.classification_report(y_true, y_pred))

y_pred = [0, 1]
y_true = [0, 1]
print(metrics.confusion_matrix(y_true, y_pred))
print(metrics.classification_report(y_true, y_pred))

y_pred = [0, 0]#这种情况对于类别1没法计算precision
y_true = [0, 1]

print(metrics.confusion_matrix(y_true, y_pred))
print(metrics.classification_report(y_true, y_pred))

#同样的数据拆分成两份,分别计算  precision    recall  f1-score,
#然后算术平均是有问题的,尤其是数据不平衡的时候,如果某个batch里面
#不存在某个类的话,就会出现除零的情况,也是会影响结果的
#所以保险起见,还是全部统计完成TP/FP/FN/TN,最后再计算precision    recall  f1-score

即便不是“除零”的情况,分批次计算+算术平均的结果跟合并计算的结果也不一致!

Multi-label (multi-class) classification

MLMC就是说单个图片有多个标签,如果一般的multi-class classification是独热编码的话,MLMC就是多热编码。如果多热编码必须跟GT一模一样才算是正确的话,这样就太严格了。这样就演变出来了很多的评价指标

第一,可以把每一个类别都当成一个二分类的问题进行评价,很自然地就可以得到每个类别的Accuracy,F1score, Recall, Precision,然后求算术平均自然就得到了宏平均
参考这里的英文:

Label based measures evaluate each label separately and then averages over all labels. Therefore,any known measure, used for evaluation of a binary classifier (e.g. accuracy, precision, recall, F 1 , ROC etc.), can be used here. Any of these scores can be computed on individual class labels first and then averaged over all classes.

在这里插入图片描述

那微平均是什么呢?,一样的,微平均就是不区分类别:

在这里插入图片描述
在这里插入图片描述
注意,这里没有”除以总个数“这样的操作,我的理解就是,把n*k个零和一摊开了一起统计出一个TP/FP/FN/TN,只一次计算Accuracy,F1score, Recall, Precision

It is important to note here that by definition, macro averaged F 1 would be more affected by the performance of the classes which has fewer examples and in contrast, micro averaged F 1 would be more affected by the performance of the classes which has more examples。

上述方法也叫做基于label,label based的评价指标;还有一种基于样本,Example-based的评价指标。 我理解的就是,对每一个Example,把1*k这个向量当成是一个二分类问题,得到TP/FP/FN/TN,计算Accuracy,F1score, Recall, Precision,然后再对所有的样本平均,得到最后的Accuracy,F1score, Recall, Precision。
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值