微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么微精度/召回更适合类不平衡?

如何解决为什么微精度/召回更适合类不平衡?

我有三个班级。假设第一类的元素数为30,第二类为30,第三类为1000。
一些算法给出了预测,得到以下误差矩阵(行是预测,列是真实标签)。

[[  1   0  10]
 [ 29   2  10]
 [  0  28 980]]

从这个矩阵可以看出,第三类分类得很好,尽管其他类几乎总是错误的。

结果是以下精度和召回率:

Precision. 
 micro: 0.927 
 macro: 0.371
Recall. 
 micro: 0.927 
 macro: 0.360

从官方文档和很多文章,问题(例如来自here)都说类不平衡时最好使用微。尽管直觉上似乎在这种情况下 micro 显示了太好的度量值,尽管事实上这两个类实际上没有被分类

解决方法

对于不平衡的类,微精度/召回并不是“更好”。

事实上,如果您查看结果,很明显,当您对不平衡数据集进行错误预测时,宏观精度/召回率的值非常小(表现不佳的标签上的结果不佳)。

然而,微精度在计算时确实考虑了每个类的元素数。

以 sklearn 的微观和宏观 f1-score 为例(精度和召回率相同):

'micro':
Calculate metrics globally by counting the total true positives,false negatives and false positives.

'macro':
Calculate metrics for each label,and find their unweighted mean. This does not take label imbalance into account.

因此,当您在未很好表示的标签中获得较差的结果时,宏实际上会惩罚您。

另一方面,微平均不会这样做,因为它会全局计算指标。

例如,这意味着如果您在 0 类中有很多样本,并且假设很多预测是正确的,而 1 类中很少有样本有很多错误预测,那么微精度/召回可能会产生很高的数字,而宏观指标(精度/召回率/f1-score)会惩罚(产生少量)特定标签上的不良结果。

现在这真的取决于你对什么感兴趣。如果你想全局有好的结果,又不关心标签的分布,那么 micro-metric 可能是合适的。

然而,我们通常关心数据集中代表性较差的类的结果,因此尽管有微观指标,宏观指标的效用也是如此。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。