机器学习中的混淆矩阵,准确率,精确率,召回率,F1-Score
评价指标的引出 为什么要引出这么多评价指标,它是基于什么样的需求?
在生活中,最常用的就是准确率,因为它定义简单而且比较通用,但在机器学习中,它往往不是评估模型的最佳工具, 特别是在数据分布不平衡的时候,请看一个例子:
比如我们训练了一个预测地震的模型,预测类别只有两个:0:不发生地震、1:发生地震,当前有100个测试集,如果模型地无脑把每一个测试用例都预测为0,那么它就达到99%的准确率,但实际上它并不具有预测的能力,为什么会出现这种情况?因为这里数据分布不平衡,类别为1的数据太少,完全分错类别1依然可以达到很高的准确率,因此在正负样本不平衡的情况下,准确率这个评价指标就有很大的缺陷。(这里的正负是相对于任务来说的,对于预测地震这个任务而言,目标是预测出地震,所以地震就是正例)
准确率是关注了所有分类正确的,当正负样例分布不平衡时,负例占据了绝大多数,而正例得不到体现,因此会造成分数高的情况,那么一个很自然解决的办法就是我们聚焦于关注正例的识别,于是就引出了精确率(精度)、召回率等指标。
一级指标 准确率、精确率、召回率等这些评价指标都是基于底层的统计指标(一级指标)计算出来的。
对于一个二分类问题,模型的预测结果有四类:
- 真正例,实际是正例,模型预测为正例(True Positive=TP)
- 假正例,实际是负例,模型预测为正例(False Negative=FN)
- 真负例,实际是负例,模型预测为负例(False Positive=FP)
- 假负例,实际是正例,模型预测为负例(True Negative=TN)
将这四个指标放在表格里就能得到如下这样一个矩阵,称它为混淆矩阵(Confusion Matrix):
![机器学习中的混淆矩阵,准确率,精确率,召回率,F1-Score](https://img.it610.com/image/info8/0bcd504b6a5d480396b6643735eab769.webp)
文章图片
二级指标 有了混淆矩阵,就可以进一步计算准确率、精确率(精度)、召回率了,这些属于二级指标,计算方式如下:
![机器学习中的混淆矩阵,准确率,精确率,召回率,F1-Score](https://img.it610.com/image/info8/e44fbebe2aef44058342cef25a6ddee7.jpg)
文章图片
可以看到,相比准确率的全局关注,精确率和召回率更多的关注了正例的内容
三级指标—F1值 有了精确率和召回率,为什么还要引入F1值指标呢?
在实际应用中,模型的精确率和召回率是矛盾的,一个高一个就低,以预测地震为例,测试集中1000天中有10天地震,假如模型不轻易预测为地震,但一个预测一个准,1000天就预测了一天为地震(预测对),那么它的精确率就为1,但召回率只有10%,假如模型随便就预测为地震,预测了100天地震(预测出了全部),那召回率为1,但精确率就只有10%。所以需要综合的考虑两者的分数,于是就引入了F1值,它是精确率和召回率的调和平均,计算方式为:
F 1 = 2 ? precision?recall precision+ recall F_{1}=2 * \frac{\text {precision } * \text { recall}}{\text {precision }+\text {recall}} F1?=2?precision +recallprecision ? recall?
F1-Score的取值范围从0到1的,1代表模型的输出最好,0代表模型的输出结果最差,很多常见的任务比如比如命名实体识别就拿它作为评价指标。
如果对你有帮助,请点个赞让我知道:-D
【机器学习中的混淆矩阵,准确率,精确率,召回率,F1-Score】reference
https://www.cnblogs.com/xuexuefirst/p/8858274.html
https://blog.csdn.net/qq_35290785/article/details/89603729
推荐阅读
- 热闹中的孤独
- JS中的各种宽高度定义及其应用
- 由浅入深理解AOP
- 我眼中的佛系经纪人
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- 继续努力,自主学习家庭Day135(20181015)
- python学习之|python学习之 实现QQ自动发送消息
- Android中的AES加密-下
- 放下心中的偶像包袱吧
- 一起来学习C语言的字符串转换函数