机器学习中的混淆矩阵、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”
...我还没有想清楚,想清楚了后续会补充的😀