[白话解析] 通过实例来梳理概念 :准确率 (Accuracy)、精准率(Precision)、召回率(Recall)和F值(F-Measure)

目录

0x00 摘要

二分类评估是对二分类算法的预测结果进行效果评估。本文将构造出一个水泊梁山的具体实例带领大家梳理相关概念。

0x01 本文缘由

笔者最近在研究Alink源码,本来计划分析二分类评估,结果打开Alink相关文档发现里面给出不少概念和公式。于是本文先带领大家一起复习/熟悉其中部分概念和公式,为后续分析源码打下良好的基础。

以下是Alink中 “二分类评估” 的说明。

  • 支持Roc曲线,LiftChart曲线,Recall-Precision曲线绘制。

  • 流式的实验支持累计统计和窗口统计。

  • 给出整体的评估指标包括:AUC、K-S、PRC, 不同阈值下的Precision、Recall、F-Measure、Sensitivity、Accuracy、Specificity和Kappa。

这些概念基本都是评价指标,这是针对模型性能优劣的一个定量指标。一种评价指标只能反映模型一部分性能,如果选择的评价指标不合理,那么可能会得出错误的结论,故而应该针对具体的数据、模型选取不同的的评价指标。

接下来就分析梳理其中部分概念。

0x02 例子构建

  • 目标:因为在招安大计上,鲁智深提出了反对意见,所以宋公明希望在梁山内部查找和鲁智深有关联的人。
  • 样本全体:林冲,武松,史进,杨志,张青,孙二娘,呼延灼,关胜,石秀,杨雄。

宋江对蒋敬说:贤弟你是神算子,快帮哥哥想想如何能够找出与大和尚有串联的人,

蒋敬说:哥哥这个要求是 “二分类问题”(例如预测患或未患心脏病、股票涨或跌等这种只有两类情况的问题),里面门道甚多,哥哥且听我慢慢道来。

0x03 混淆矩阵

蒋敬说:首先小弟介绍的概念是混淆矩阵,这是一个 2 维方阵,它主要用于评估二分类问题的好坏。

3.1 四种分类情况

针对一个二分类问题,即将实例分成正类(positive)或负类(negative),在实际分类中会出现以下四种情况:

  • TN (True Negative ):算法预测为负例(N),实际上也是负例(N)的个数,即算法预测对了(True)。

  • FP (False Positive ):算法预测为正例(P),实际上是负例(N)的个数,即算法预测错了(False)

    这里指的是:实际为负例但被分类器划分为正例的实例数。

  • FN (False Negative ):算法预测为负例(N),实际上是正例(P)的个数,即算法预测错了(False)

    这里指的是:即实际为正例但被分类器划分为负例的实例数。

  • TP (True Positive ):算法预测为正例(P),实际上也是正例(P)的个数,即算法预测对了(True)。

宋江道:如此说来,“与鲁智深有关联人” 就是 TP + FP了。

蒋敬说:哥哥误会了,实际为正例的样本数应该是 TP + FN

这里有个记忆诀窍听小弟道来。

记忆诀窍是 :这 4 个定义由两个字母组成:

  • 第 1 个字母表示算法预测正确或者错误,即 True、False 描述的是这个分类器是否判断正确。
  • 第 2 个字母表示算法预测的结果,即 Positive、Negative 是这个分类器的分类结果。

所以再次澄清:

  • TP :预测为正样本,实际也是正样本。
  • FP :预测为正样本,实际是负样本。
  • FN :预测为负样本,实际是正样本。
  • TN:预测为负样本,实际也是负样本。
  • P = TP + FN :所有 "实际为正例" 的样本数
  • N = FP + TN :所有 "实际 为负例" 的样本数
  • P~ = TP + FP :所有 "预测为正例" 的样本数
  • N~ = TN + FN :所有 "预测为负例" 的样本数

3.2 混淆矩阵

混淆矩阵是把真实值和预测值相对应的样本数量列出来的一张交叉表。这样,所有正确的预测结果都在其对角线上,所以从混淆矩阵中可以很直观地看出哪里有错误。

矩阵的每一行是样本的预测分类,每一列是样本的真实分类(反过来也可以)。

预测值 0 (与鲁智深无关联) 预测值 1 (与鲁智深有关联)
真实值 0 (与鲁智深无关联) TN FP
真实值 1 (与鲁智深有关联) FN TP

记忆方法:真实值更重要,所以真实值处在第一个维度,就是行。

0x04 准确率 Accuracy

蒋敬说:小弟介绍的第二个概念是准确率 Accuracy。这 Accuracy 指的是预测正确的样本数量占总量的百分比。

4.1 公式

\[Accuray = \frac {TP + TN}{TP + TN + FP + FN} = \frac {TP + TN}{P + N}
\]

按照我们上文的定义:第 1 个字母表示算法预测正确或者错误,第 2 个字母表示算法预测的结果

所以分母是全部四种数据;分子中第一个字母是 T 表示 "算法预测正确了"。

4.2 特点

准确率有一个缺点,就是数据的样本不均衡,这个指标是不能评价模型的性能优劣的。

假如一个测试集有正样本99个,负样本1个。我们设计的模型是个无脑模型,即把所有的样本都预测为正样本,那么模型的Accuracy为99%,看评价指标,模型的效果很好,但实际上模型没有任何预测能力。

0x05 精准率 Precision

蒋敬说:小弟介绍的第三个概念是精准率,又称为查准率,就是 “预测为正例" 的那些数据里 "预测正确" 的数据个数。即在模型预测为正样本的结果中,真正是正样本所占的百分比。或者说是 在预测为正样本的结果中,有多少是准确的。

5.1 公式

\[Precision = \frac {TP}{TP + FP}
\]

按照我们上文的定义:第 1 个字母表示算法预测正确或者错误,第 2 个字母表示算法预测的结果

所以分母中, TP表示 : 算法预测正确 & 预测的是正例,FP表示 : 算法预测错误 & 预测的是正例(实际是负例)

5.2 特点

这个指标比较谨慎,分类阈值较高。

5.3 应用场景

需要尽可能地把所需的类别检测准确,而不在乎这些类别是否都被检测出来。比如对于罪犯的预测,我们希望预测结果是非常准确的,即使放过了一些真正的罪犯,也不能错怪一个好人

0x06 准确率 VS 精准率

宋江说,贤弟这两个中文词长得也太像太坑爹了,哥哥我很难区别。

蒋敬说:哥哥,这两个词是从英文翻译过来的,咱慢慢推敲。

让我们看看其英文原意。

  • Accuracy在词典中的定义是:the quality or state of being correct or precise
  • Precision在词典中的定义是:the quality, condition, or fact of being exact and accurate

Accuracy首先是correct(正确),而precision首先是exact(精确,或者说确切)。首先准确,然后才谈得上精确。一个结果必须要同时符合准确与精密这两个条件,才可算是精准。

这两个词也 有点类似 偏差(bias)与方差(variance)

  • 偏差(bias)反映了模型在样本上的期望输出与真实标记之间的差距,即模型本身的精准度,反映的是模型本身的拟合能力。这就很像 Precision。
  • 方差(variance)反映了模型在不同训练数据集下学得的函数的输出与期望输出之间的误差,即模型的稳定性,反应的是模型的波动情况。这有点像 Accuracy。

宋江说,贤弟你这偏差,方差的,哥哥也听着像天书。

蒋敬说:待小弟给哥哥找一个合适的例子。

比如大概可以类比成咱射箭,准确率要看你射中靶心的概率;精准率要看你射中的是靶心区域的哪个位置。

0x07 召回率 Recall

这是针对原始样本而言的一个评价指标。召回率又称为查全率,就是在实际为正样本中,被预测为正样本所占的百分比。 即所有正例中,有多少被正确地判定为正。

7.1 公式

\[recall= \frac {

[白话解析] 通过实例来梳理概念 :准确率 (Accuracy)、精准率(Precision)、召回率(Recall)和F值(F-Measure)的更多相关文章

  1. 准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure

    yu Code 15 Comments  机器学习(ML),自然语言处理(NLP),信息检索(IR)等领域,评估(Evaluation)是一个必要的 工作,而其评价指标往往有如下几点:准确率(Accu ...

  2. 准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure(对于二分类问题)

    首先我们可以计算准确率(accuracy),其定义是: 对于给定的测试数据集,分类器正确分类的样本数与总样本数之比.也就是损失函数是0-1损失时测试数据集上的准确率. 下面在介绍时使用一下例子: 一个 ...

  3. 目标检测评价标准(mAP, 精准度(Precision), 召回率(Recall), 准确率(Accuracy),交除并(IoU))

    1. TP , FP , TN , FN定义 TP(True Positive)是正样本预测为正样本的数量,即与Ground truth区域的IoU>=threshold的预测框 FP(Fals ...

  4. [白话解析] 带你一起梳理Word2vec相关概念

    [白话解析] 带你一起梳理Word2vec相关概念 0x00 摘要 本文将尽量使用易懂的方式,尽可能不涉及数学公式,而是从整体的思路上来说,运用感性直觉的思考来帮大家梳理Word2vec相关概念. 0 ...

  5. 一文让你彻底理解准确率,精准率,召回率,真正率,假正率,ROC/AUC

    参考资料:https://zhuanlan.zhihu.com/p/46714763 ROC/AUC作为机器学习的评估指标非常重要,也是面试中经常出现的问题(80%都会问到).其实,理解它并不是非常难 ...

  6. 二分类算法的评价指标:准确率、精准率、召回率、混淆矩阵、AUC

    评价指标是针对同样的数据,输入不同的算法,或者输入相同的算法但参数不同而给出这个算法或者参数好坏的定量指标. 以下为了方便讲解,都以二分类问题为前提进行介绍,其实多分类问题下这些概念都可以得到推广. ...

  7. 准确率、精确率、召回率、F1

    在搭建一个AI模型或者是机器学习模型的时候怎么去评估模型,比如我们前期讲的利用朴素贝叶斯算法做的垃圾邮件分类算法,我们如何取评估它.我们需要一套完整的评估方法对我们的模型进行正确的评估,如果模型效果比 ...

  8. 【AI】基本概念-准确率、精准率、召回率的理解

    样本全集:TP+FP+FN+TN TP:样本为正,预测结果为正 FP:样本为负,预测结果为正 TN:样本为负,预测结果为负 FN:样本为正,预测结果为负 准确率(accuracy):(TP+TN)/ ...

  9. 准确率(Precision),召回率(Recall)以及综合评价指标(F1-Measure)

    准确率和召回率是数据挖掘中预测,互联网中得搜索引擎等经常涉及的两个概念和指标. 准确率:又称“精度”,“正确率” 召回率:又称“查全率” 以检索为例,可以把搜索情况用下图表示:   相关 不相关 检索 ...

随机推荐

  1. 八皇后问题求解java(回溯算法)

    八皇后问题 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例.该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处 ...

  2. Java IO(十二) 字符流 Writer 和 Reader

    Java IO(十二) 字符流 Reader和 Writer 一.介绍 涉及到文件(如果是纯文本文件形式)操作时,Java除了提供 FIle(文件和目录路径名的抽象表示形式) 和 FileDescri ...

  3. Rocket - tilelink - Bits vs. UInt

    https://mp.weixin.qq.com/s/lzDmIHkUph3b1Fxgx66ySg   分析移位/取反操作在Intellij中提示错误的问题.   1. 问题   用到移位/取反的地方 ...

  4. PowerPC-MPC56xx Flash模式代码启动过程

    https://mp.weixin.qq.com/s/iruM5VwKgnH_7nmIQxO0-g   参考第5章   In order for the e200z4d core to be able ...

  5. Chisel3 - model - when

    https://mp.weixin.qq.com/s/YGTXky4wff7LXUphUxISQg   介绍创建模块判断逻辑的when命令.   1. when/elsewhen/otherwise ...

  6. Linux (一)概述

    认识操作系统 操作系统的作用 把计算机系统中对硬件设备的操作封装起来,供应用软件调用. ​ 2. 常见操作系统        1.2.1 PC端OS ​ 1.2.2  移动端OS ​ 1.2.3  服 ...

  7. Vue中keep-alive的使用

    Vue中keep-alive的使用我总结的有两种方式应用: 首先简述一下keep-alive的作用,kee-alive可以缓存不活动的的组件.当组件之间进行相互切换的时候,默认会销毁,当重新切换回来时 ...

  8. Java实现 蓝桥杯VIP 算法训练 最大值与最小值的计算

    输入11个整数,计算它们的最大值和最小值. 样例输入 0 1 2 3 4 5 6 7 8 9 10 样例输出 10 0 import java.util.Scanner; public class 最 ...

  9. java实现 洛谷 P1017 进制转换

    import java.util.Scanner; public class Main { private static Scanner cin; public static void main(St ...

  10. Alink漫谈(六) : TF-IDF算法的实现

    Alink漫谈(六) : TF-IDF算法的实现 目录 Alink漫谈(六) : TF-IDF算法的实现 0x00 摘要 0x01 TF-IDF 1.1 原理 1.2 计算方法 0x02 Alink示 ...