机器学习中的混淆矩阵、ACC、F1等概念

一、混淆矩阵

1.这张图怎么看/记忆

从“预测”的值出发,看“实际”值是什么,即——

二、准确率

1.准确率(ACC)理解

所有样本当中,预测其属性正确(上图当中的“真的”)的比例——准确预测其属性的,叫“准确”率

三、精确率

1.精确率(Precision)理解

在预测为阳性当中,确实是阳性的比例。也就是只有下方右侧这幅图所展示的那样:

2.为什么要搞准确率和精确率两种指标呢,这两种看起来不是一个东西吗,都是评价机器学习打标签的准确与否吗?

答:如果只是要看这个模型的准不准,即能不能把阳性判定为阳性、阴性判定为阴性,那可以用准确率 ——从整体的视角;但是如果是要看模型评价某一个指标评价的准不准,即预测阳性之中实际的阳性有多少,那就是要用精确率了——从局部/某个指标(如Positve)的视角

四、召回率(敏感度)

1.召回率(Recall)理解

准确率是把下图右侧图片的红框数过来,框住Predicted-Positive;而召回率是下图右侧图片的红框,是实际为Positive中,模型抓出了(预测到了)Positive的比例。

2.召回率和精确率的区别

召回率关注“查全”,精确率关注“查准”。因此可以根据使用场景,也就是你到底要查准还是查全来选择Precision还是Recall。如果是要检查患病的阴性阳性,那就是要用召回率了,因为要“查全”,而不是“查准”——把阴性判定为了阳性(FP),是可以复查的,也就是说就算精确率小了,也没有关系,因为现在关注的是有没有查全。

五、F1分数

1.F1分数理解

F1分数是精确率和召回率的调和平均数。设置F1的原因是,对于查准和查全,一般是相互排斥的,也就是说,精确率上去了,大概率是通过减少预测为Positive的数量实现的(小心谨慎了),但是降低了预测为Positive的数量,就会导致很多实际是Positive的样本没有被检测到,即没做到“查全”,召回率降低了。为了综合评价查准和查全,将这两个指标进行调和平均数的计算,得到F1分数。

六、多分类问题当中的混淆矩阵

拓展到多个维度之后,同样可以计算这些指标:

七、自用:LLM项目中的混淆矩阵及其指标

1.LLM项目中的混淆矩阵及其指标的计算介绍

  • 生成式任务(信息提取类)——对于信息提取类来说,混淆矩阵当中的各个维度是,提取出来的所有可能情况,比如说:天气,所有样本提取出来只有“晴、雨、阴”三种,那么接下来就是将所有预测(即“事故信息提取的结果”)和所有真实数据。进行比对,然后填入这个3x3的混淆矩阵当中。然后按照不同的average形式得到结果:

此外还有这些多标签、二分类的情况,仅作科普用:

  • 分类任务(事故定责)——和生成式是一个道理。先按照事故类型形成混淆矩阵的框框,然后统计样本...

2.为什么选择“average='micro', zero_division=0”

...我还没有想清楚,想清楚了后续会补充的😀