混淆矩阵

在介绍具体的定义之前先了解一些混淆矩阵(confusion matrix):
一种 NxN 表格,用于总结分类模型的预测效果;即标签和模型预测的分类之间的关联。在混淆矩阵中,一个轴表示模型预测的标签,另一个轴表示实际标签。N 表示类别个数。在二元分类问题中,N=2。例如,下面显示了一个二元分类问题的混淆矩阵示例:

- 肿瘤(预测的标签) 非肿瘤(预测的标签)
肿瘤(实际标签) 18 1
非肿瘤(实际标签) 6 452

上面的混淆矩阵显示,在 19 个实际有肿瘤的样本中,该模型正确地将 18 个归类为有肿瘤(18 个正例),错误地将 1 个归类为没有肿瘤(1 个假负例)。同样,在 458 个实际没有肿瘤的样本中,模型归类正确的有 452 个(452 个负例),归类错误的有 6 个(6 个假正例)。

多类别分类问题的混淆矩阵有助于确定出错模式。例如,某个混淆矩阵可以揭示,某个经过训练以识别手写数字的模型往往会将 4 错误地预测为 9,将 7 错误地预测为 1。

  • True Positive(真正, TP):将正类预测为正类数.
  • True Negative(真负 , TN):将负类预测为负类数.
  • False Positive(假正, FP):将负类预测为正类数 → 误报 (Type I error).
  • False Negative(假负 , FN):将正类预测为负类数 → 漏报 (Type II error).

由上,顾名思义可知,假负、假正当然是不是真的,就是和真实情况相反的。真正,真负,就是和真实情况一样的。

准确率

准确率是一个用于评估分类模型的指标。通俗来说,准确率是指我们的模型预测正确的结果所占的比例。正式点说,准确率的定义如下:
Accuracy=Number of correct predictionsTotal number of predictions\text{Accuracy} = \frac{\text{Number of correct predictions}}{\text{Total number of predictions}}Accuracy=Total number of predictionsNumber of correct predictions​
对于二元分类,也可以根据正类别和负类别按如下方式计算准确率:
Accuracy=TP+TNTP+TN+FP+FN\text{Accuracy} = \frac{TP+TN}{TP+TN+FP+FN}Accuracy=TP+TN+FP+FNTP+TN​
其中,TP = 真正例,TN = 真负例,FP = 假正例,FN = 假负例。
让我们来试着计算一下以下模型的准确率,该模型将 100 个肿瘤分为恶性 (正类别)或良性(负类别):

Accuracy=TP+TNTP+TN+FP+FN=1+901+90+1+8=0.91\text{Accuracy} = \frac{TP+TN}{TP+TN+FP+FN} = \frac{1+90}{1+90+1+8} = 0.91Accuracy=TP+TN+FP+FNTP+TN​=1+90+1+81+90​=0.91

准确率为 0.91,即 91%(总共 100 个样本中有 91 个预测正确)。这表示我们的肿瘤分类器在识别恶性肿瘤方面表现得非常出色,对吧?
实际上,只要我们仔细分析一下正类别和负类别,就可以更好地了解我们模型的效果。
在 100 个肿瘤样本中,91 个为良性(90 个 TN 和 1 个 FP),9 个为恶性(1 个 TP 和 8 个 FN)。

在 91 个良性肿瘤中,该模型将 90 个正确识别为良性。这很好。不过,在 9 个恶性肿瘤中,该模型仅将 1 个正确识别为恶性。这是多么可怕的结果!9 个恶性肿瘤中有 8 个未被诊断出来!

虽然 91% 的准确率可能乍一看还不错,但如果另一个肿瘤分类器模型总是预测良性,那么这个模型使用我们的样本进行预测也会实现相同的准确率(100 个中有 91 个预测正确)。换言之,我们的模型与那些没有预测能力来区分恶性肿瘤和良性肿瘤的模型差不多。

所以当使用分类不平衡的数据集(比如正类别标签和负类别标签的数量之间存在明显差异)时,单单准确率一项并不能反映全面情况。

精确率

精确率指标尝试回答以下问题:

  • 在被识别为正类别的样本中,确实为正类别的比例是多少?

精确率的定义如下:
Precision=TPTP+FP\text{Precision} = \frac{TP}{TP+FP}Precision=TP+FPTP​

如果模型的预测结果中没有假正例,则模型的精确率为 1.0。

计算上一部分的用于分析肿瘤的机器学习模型的精确率:

真正例 (TP):1 假正例 (FP):1
假负例 (FN):8 真负例 (TN):90

精确率=TPTP+FP=11+1=0.5\text{精确率} = \frac{TP}{TP+FP} = \frac{1}{1+1} = 0.5精确率=TP+FPTP​=1+11​=0.5

该模型的精确率为 0.5,也就是说,该模型在预测恶性肿瘤方面的正确率是 50%。

召回率

召回率尝试回答以下问题:

  • 在所有正类别样本中,被正确识别为正类别的比例是多少?

从数学上讲,召回率的定义如下:

召回率=TPTP+FN\text{召回率} = \frac{TP}{TP+FN}召回率=TP+FNTP​
注意:如果模型的预测结果中没有假负例,则模型的召回率为 1.0。

让我们来计算一下肿瘤分类器的召回率:

真正例 (TP):1 假正例 (FP):1
假负例 (FN):8 真负例 (TN):90

召回率=TPTP+FN=11+8=0.11\text{召回率} = \frac{TP}{TP+FN} = \frac{1}{1+8} = 0.11召回率=TP+FNTP​=1+81​=0.11

该模型的召回率是 0.11,也就是说,该模型能够正确识别出所有恶性肿瘤的百分比是 11%。

看一张形象的图

精确率和召回率之间的博弈

要全面评估模型的有效性,必须同时检查精确率和召回率。遗憾的是,精确率和召回率往往是此消彼长的情况。也就是说,提高精确率通常会降低召回率值,反之亦然。请观察下图来了解这一概念,该图显示了电子邮件分类模型做出的 30 项预测。分类阈值右侧的被归类为“垃圾邮件”,左侧的则被归类为“非垃圾邮件”。

图 1. 将电子邮件归类为垃圾邮件或非垃圾邮件。


我们根据图 1 所示的结果来计算精确率和召回率值:

真正例 (TP):8 假正例 (FP):2
假负例 (FN):3 真负例 (TN):17

精确率指的是被标记为垃圾邮件的电子邮件中正确分类的电子邮件所占的百分比,即图 1 中阈值线右侧的绿点所占的百分比:

Precision=TPTP+FP=88+2=0.8\text{Precision} = \frac{TP}{TP + FP} = \frac{8}{8+2} = 0.8Precision=TP+FPTP​=8+28​=0.8

召回率指的是实际垃圾邮件中正确分类的电子邮件所占的百分比,即图 1 中阈值线右侧的绿点所占的百分比:

Recall=TPTP+FN=88+3=0.73\text{Recall} = \frac{TP}{TP + FN} = \frac{8}{8 + 3} = 0.73Recall=TP+FNTP​=8+38​=0.73

图 2 显示了提高分类阈值产生的效果。

假正例数量会减少,但假负例数量会相应地增加。结果,精确率有所提高,而召回率则有所降低:

真正例 (TP):7 假正例 (FP):1
假负例 (FN):4 真负例 (TN):18

Precision=TPTP+FP=77+1=0.88\text{Precision} = \frac{TP}{TP + FP} = \frac{7}{7+1} = 0.88Precision=TP+FPTP​=7+17​=0.88

Recall=TPTP+FN=77+4=0.64\text{Recall} = \frac{TP}{TP + FN} = \frac{7}{7 + 4} = 0.64Recall=TP+FNTP​=7+47​=0.64

图 3 显示了降低分类阈值(从图 1 中的初始位置开始)产生的效果。


假正例数量会增加,而假负例数量会减少。结果这一次,精确率有所降低,而召回率则有所提高:

真正例 (TP):9 假正例 (FP):3
假负例 (FN):2 真负例 (TN):16

Precision=TPTP+FP=99+3=0.75\text{Precision} = \frac{TP}{TP + FP} = \frac{9}{9+3} = 0.75Precision=TP+FPTP​=9+39​=0.75
Recall=TPTP+FN=99+2=0.82\text{Recall} = \frac{TP}{TP + FN} = \frac{9}{9 + 2} = 0.82Recall=TP+FNTP​=9+29​=0.82
我们已根据精确率和召回率指标制定了各种指标

参考链接

google 机器学习实战

机器学习性能评估指标

机器学习分类指标:精确率、准确率、召回率详解相关推荐

  1. 机器学习分类问题指标评估内容详解(准确率、精准率、召回率、F1、ROC、AUC等)

    文章目录 前言 一.混淆矩阵(confusion matrix) 二.准确率,精准率,召回率,F1分数 1. 准确率(Accuracy) 2. 精确率(Precision) 3. 召回率(Recall ...

  2. python分类预测降低准确率_【火炉炼AI】机器学习011-分类模型的评估:准确率,精确率,召回率,F1值...

    [火炉炼AI]机器学习011-分类模型的评估:准确率,精确率,召回率,F1值 (本文所使用的Python库和版本号: Python 3.5, Numpy 1.14, scikit-learn 0.19 ...

  3. 机器学习分类模型中的评价指标介绍:准确率、精确率、召回率、ROC曲线

    文章来源:https://blog.csdn.net/wf592523813/article/details/95202448 1 二分类评价指标 准确率,精确率,召回率,F1-Score, AUC, ...

  4. scikit-learn:打印分类报告,求准确率、精确率、召回率、F1值等指标

    一.打印分类报告(使用scikit-learn库中的函数) from sklearn.metrics import classification_report# y_test为测试集真实标签, y_p ...

  5. 机器学习面试题集-图解准确率,精确率,召回率

    https://www.toutiao.com/a6692359723615781389/ 今天进入第二章:模型评估 1. 什么是模型评估 模型训练后要对其进行评估,看模型表现如何,哪里可以改进 分类 ...

  6. 机器学习——二分类、多分类的精确率和召回率

    机器学习有很多评估的指标.有了这些指标我们就横向的比较哪些模型的表现更好.我们先从整体上来看看主流的评估指标都有哪些: 分类问题评估指标: 准确率 – Accuracy 精确率(差准率)- Preci ...

  7. 机器学习算法 03 —— 逻辑回归算法(精确率和召回率、ROC曲线和AUC指标、过采样和欠采样)

    文章目录 系列文章 逻辑回归 1 逻辑回归介绍 1.1 逻辑回归原理 输入 激活函数 1.2 损失以及优化 2 逻辑回归API介绍 3 案例:肿瘤良性恶性预测 4 分类模型的评估 4.1 分类评估方法 ...

  8. 一文看懂分类模型的评估指标:准确率、精准率、召回率、F1等

    2019-11-21 21:59:23 机器学习模型需要有量化的评估指标来评估哪些模型的效果更好. 本文将用通俗易懂的方式讲解分类问题的混淆矩阵和各种评估指标的计算公式.将要给大家介绍的评估指标有:准 ...

  9. 【机器学习】准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure

    在机器学习.数据挖掘.推荐系统完成建模之后,需要对模型的效果做评价. 业内目前常常采用的评价指标有准确率(Precision).召回率(Recall).F值(F-Measure)等,下图是不同机器学习 ...

最新文章

  1. oracle执行计划走偏处理步骤
  2. Linux下搭建lamp论坛(phpwind+wordpress+discus)
  3. 竞赛|数据竞赛Top解决方案开源整理-科大讯飞AI营销算法、阿里妈妈搜索广告、腾讯广告算法、搜狗的用户画像
  4. C语言fread函数了解
  5. wifi 信道_WiFi网速太慢,四招就可以让无线网络变得顺畅
  6. Laravel中使用Eloquent时给查询的字段设置别名
  7. 《OpenGL编程指南(原书第8版)》——计算着色器
  8. 边框回归的损失函数_CVPR 2019:精确目标检测的不确定边界框回归
  9. 【Spring MVC】学习笔记汇总
  10. Pyston v2.0 发布,速度比 Python 快 20%!
  11. linux下的man和info命令
  12. eclipse更换jdk版本
  13. 2500个常用汉字及繁体对应
  14. win7虚拟机时间不能修改怎么办
  15. 华为的提倡大家学雷锋,绝不让雷锋吃亏
  16. android 闪光灯程序,如何在Android中以编程方式打开前闪光灯?
  17. 西瓜视频地址分析下载(2020-10-29)
  18. 烂笔头笔记:Charles工具在Windows系统中闪退(无法打开)的问题修复
  19. 12项信息安全标准发布 为解决车联网行业“顽疾”提供可靠指导
  20. 百度seo和谷歌seo的区别

热门文章

  1. 恭喜你发现了宝藏,编程习惯-日积月累
  2. IDEA自定义快捷指令,快捷生成代码、注释
  3. 2022-2028年中国企业核心路由交换机行业市场前瞻与投资分析报告
  4. Docker 入门系列(2)- Docker 镜像, 免 sudo 使用 docker 命令、获取查看、修改镜像标签、查找删除创建镜像、导入导出镜像
  5. 文化内涵和历史深度:PC
  6. SpringBoot (一) :入门篇 Hello World
  7. java转python
  8. 卷积神经网络之卷积计算、作用与思想 深度学习
  9. Google Colab——用谷歌免费GPU跑你的深度学习代码
  10. 梯度提升决策树(GBDT)与XGBoost、LightGBM