介绍

不仅在机器学习中,而且在一般生活中,尤其是商业生活中,您都会听到诸如“您的产品有多准确?”之类的问题。或“你的机器有多精确?”。当人们收到诸如“这是该领域最准确的产品!”之类的回复时。或“这台机器具有可以想象的最高精度!”,这两个答案让他们感到很欣慰。他们不应该吗?事实上,术语accurateprecise经常可以互换使用。我们将在本文后面给出确切的定义,但简而言之,我们可以说:准确度是对某些测量值与特定值的接近程度的度量,而精度是测量值彼此之间的接近程度。

这些术语在机器学习中也非常重要。我们需要它们来评估 ML 算法或改善其结果。

我们将在 Python 机器学习教程的本章中介绍四个重要指标。这些指标用于评估分类结果。指标是:

  • 准确性
  • 精确
  • 记起
  • F1-Score

我们将介绍这些指标中的每一个,并讨论每个指标的优缺点。每个指标衡量分类器性能的不同之处。这些指标对于我们机器学习教程的所有章节都至关重要。

准确性

准确度是测量值与特定值的接近程度的度量,而精度是测量值彼此之间的接近程度,即不一定与特定值接近。换句话说:如果我们有一组来自相同数量的重复测量的数据点,如果它们的平均值接近被测量数量的真实值,则称该组是准确的。另一方面,如果值彼此接近,我们称集合为精确的。这两个概念是相互独立的,这意味着数据集可以是准确的,也可以是精确的,或者两者兼而有之,或者两者都不是。我们在下图中展示了这一点:

混淆矩阵

在我们继续使用术语 之前accuracy,我们要确保您了解混淆矩阵的含义。

混淆矩阵,也称为列联表或误差矩阵,用于可视化分类器的性能。

矩阵的列代表预测类的实例,行代表实际类的实例。(注意:也可以反过来。)

在二进制分类的情况下,该表有 2 行和 2 列。

我们想用一个例子来演示这个概念。

混淆矩阵示例

预测类别
实际
班级
42 8
18 32

这意味着分类器在 42 个案例中正确预测了一只猫,并将 8 个猫实例错误地预测为狗。它正确地将 32 个实例预测为狗。18 例被错误地预测为猫而不是狗。

分类准确度

我们对机器学习感兴趣,准确性也被用作统计指标。准确度是一种统计量度,定义为分类器做出的正确预测(真阳性 (TP) 和真阴性 (TN))的商除以分类器做出的所有预测的总和,包括假阳性 (FP)和假阴性(FN)。因此,量化二进制精度的公式为:

准确性=吨磷+吨N吨磷+吨N+F磷+FN

其中: TP = 真阳性;FP = 误报;TN = 真阴性;FN = 假阴性

对应的混淆矩阵如下所示:

预测类别
消极的 积极的
实际
班级
消极的 田纳西州 FP
积极的 FN TP

我们现在将计算猫狗分类结果的准确性。我们在这里看到的不是“真”和“假”,而是“猫”和“狗”。我们可以这样计算准确度:

TP  =  42
TN  =  32
FP  =  8
FN  =  18精度 =  ( TP  +  TN ) / ( TP  +  TN  +  FP  +  FN )
打印(精度)

输出:

0.74

假设我们有一个分类器,它总是预测“狗”。

预测类别
实际
班级
0 50
0 50

在这种情况下,我们的精度为 0.5:

TP , TN , FP , FN  =  0 , 50 , 50 , 0
精度 =  (TP  +  TN )/ (TP  +  TN  +  FP  +  FN )
打印(精度)

输出:

0.5

准确性悖论

我们将证明所谓的准确性悖论。

垃圾邮件识别分类器由以下混淆矩阵描述:

预测类别
垃圾邮件 火腿
实际
班级
垃圾邮件 4 1
火腿 4 91
TP , TN , FP , FN  =  4 , 91 , 1 , 4
准确性 =  (TP  +  TN )/ (TP  +  TN  +  FP  +  FN )
打印(准确性)

输出:

0.95

以下分类器仅预测“ham”并具有相同的准确性。

预测类别
垃圾邮件 火腿
实际
班级
垃圾邮件 0 5
火腿 0 95
TP , TN , FP , FN  =  0 , 95 , 5 , 0
精度 =  (TP  +  TN )/ (TP  +  TN  +  FP  +  FN )
打印(准确性)

输出:

0.95

该分类器的准确率为 95%,即使它根本无法识别任何垃圾邮件。

精确

精度是正确识别的阳性案例与所有预测的阳性案例的比率,即正确和错误预测的案例为positive。精度是检索到的与查询相关的文档的比例。公式:

pr电子C一世秒一世○n=吨磷吨磷+F磷

我们将通过一个例子来证明这一点。

预测类别
垃圾邮件 火腿
实际
班级
垃圾邮件 12 14
火腿 0 114

我们可以计算precision我们的例子:

TP  =  114
FP  =  14
# 公式中不需要 FN (0) 和 TN (12)!
精度 =  TP  /  ( TP  +  FP )
打印( f "precision: {precision:4.2f} " )

输出:

精度:0.89

练习:在继续阅读文本之前,请先考虑该值的precision含义。如果您查看我们的垃圾邮件过滤器示例的精确度度量,它会告诉您关于垃圾邮件过滤器质量的什么信息?理想垃圾邮件过滤器的混淆矩阵的结果是什么样的?什么更糟,高 FP 或 FN 值?

您将在以下说明中间接找到答案。

顺便说一下,理想的垃圾邮件过滤器的 FP 和 FN 值都为 0。

先前的结果意味着 100 封邮件中有 11 封会被归类为火腿,即使它们是垃圾邮件。89 个被正确归类为火腿。这是我们应该讨论错误分类成本的地方。当垃圾邮件不被识别为“垃圾邮件”,而是作为“火腿”呈现给我们时,这很麻烦。如果百分比不是太高,这很烦人但不是灾难。相比之下,当非垃圾邮件被错误地标记为垃圾邮件时,该电子邮件在许多情况下不会显示甚至自动删除。例如,这会带来失去客户和朋友的高风险。该措施precision没有对最后提到的这个问题类别作出任何声明。其他措施呢?

我们将看看recallF1-score

记起

召回率,也称为灵敏度,是正确识别的阳性案例与所有实际阳性案例的比率,它是“假阴性”和“真阳性”的总和。

r电子C一个升升=吨磷吨磷+FN

TP  =  114
FN  =  0
# 公式中不需要 FT (14) 和 TN (12)!
召回 =  TP  /  ( TP  +  FN )
打印( f "recall: {recall:4.2f} " )

输出:

召回:1.00

值 1 表示没有非垃圾邮件被错误地标记为垃圾邮件。对于一个好的垃圾邮件过滤器来说,这个值应该是 1 很重要。我们之前已经讨论过这个。

F1-分数

我们将检查的最后一个指标是 F1 分数。

F1=21r电子C一个升升+1pr电子C一世秒一世○n=2⋅pr电子C一世秒一世○n⋅r电子C一个升升pr电子C一世秒一世○n+r电子C一个升升

TF  =  7  # 我们将 True false 值设置为 5 % 
print ( " FN FP TP pre acc rec f1" )
for  FN  in  range ( 0 ,  7 ): for  FP  in  range ( 0 ,  FN + 1 ): # the sum FN、FP、TF 和 TP 的值为100:TP  =  100  -  FN  -  FP  -  TF #print(FN, FP, TP, FN+FP+TP+TF) precision  =  TP  /  ( TP  +  FP)准确率 =  ( TP  +  TN ) / ( TP  +  TN  +  FP  +  FN )召回率 =  TP  /  ( TP  +  FN ) f1_score  =  2  * 准确率 * 召回率 /  (准确率 + 召回率)打印( f " {FN:6.2f} {FP:6.2f}{TP:6.2f} " ,  end = "" )打印( f" {precision:6.2f}{accuracy:6.2f}{recall:6.2f}{f1_score:6.2f} " )

输出:

  FN FP TP pre acc rec f10.00 0.00 93.00 1.00 1.00 1.00 1.001.00 0.00 92.00 1.00 0.99 0.99 0.991.00 1.00 91.00 0.99 0.99 0.99 0.992.00 0.00 91.00 1.00 0.99 0.98 0.992.00 1.00 90.00 0.99 0.98 0.98 0.982.00 2.00 89.00 0.98 0.98 0.98 0.983.00 0.00 90.00 1.00 0.98 0.97 0.983.00 1.00 89.00 0.99 0.98 0.97 0.983.00 2.00 88.00 0.98 0.97 0.97 0.973.00 3.00 87.00 0.97 0.97 0.97 0.974.00 0.00 89.00 1.00 0.98 0.96 0.984.00 1.00 88.00 0.99 0.97 0.96 0.974.00 2.00 87.00 0.98 0.97 0.96 0.974.00 3.00 86.00 0.97 0.96 0.96 0.964.00 4.00 85.00 0.96 0.96 0.96 0.965.00 0.00 88.00 1.00 0.97 0.95 0.975.00 1.00 87.00 0.99 0.97 0.95 0.975.00 2.00 86.00 0.98 0.96 0.95 0.965.00 3.00 85.00 0.97 0.96 0.94 0.965.00 4.00 84.00 0.95 0.95 0.94 0.955.00 5.00 83.00 0.94 0.95 0.94 0.946.00 0.00 87.00 1.00 0.97 0.94 0.976.00 1.00 86.00 0.99 0.96 0.93 0.966.00 2.00 85.00 0.98 0.96 0.93 0.966.00 3.00 84.00 0.97 0.95 0.93 0.956.00 4.00 83.00 0.95 0.95 0.93 0.946.00 5.00 82.00 0.94 0.94 0.93 0.946.00 6.00 81.00 0.93 0.94 0.93 0.93

我们可以看到,这f1-score最能反映 FN 值上升的最坏情况,即 ham 被归类为垃圾邮件!

python机器学习评估指标相关推荐

  1. python机器学习评估指标,阿里专家原创

    TN = 32 FP = 8 FN = 18 精度 = ( TP + TN ) / ( TP + TN + FP + FN ) 打印(精度) 输出: 0.74 假设我们有一个分类器,它总是预测&quo ...

  2. 机器学习评估指标:准确率( Accuracy )、精确率(Precision)、召回率(Recall)、P-R 曲线、均方根误差

    在模型评估过程中,分类问题.排序问题.回归问题往往需要使用不同的指标进行评估.在诸多的评估指标中,大部分指标只能片面地反映模型的一部分性能. 如果不能合理地运用评估指标,不仅不能发现模型本身的问题,而 ...

  3. 机器学习评估指标汇总:准确率(Precision)、召回率(Recall)、F值(F-Measure)、ROC曲线、PR曲线

    摘要: 数据挖掘.机器学习和推荐系统中的评测指标-准确率(Precision).召回率(Recall).F值(F-Measure)简介. 引言: 在机器学习.数据挖掘.推荐系统完成建模之后,需要对模型 ...

  4. 机器学习基础专题:评估指标

    评估指标 线下使用机器学习评估指标,线上使用的是业务指标.需要进行多轮模型迭代使两个指标变化趋势相同. 分类指标 精确率和召回率 用于二分类问题,结合混淆矩阵. 精确率 P = TPTP+FP\fra ...

  5. 机器学习框架及评估指标详解

    目录 机器学习的步骤 train_test_split函数的详解 机器学习评估指标 分类模型评估指标

  6. 分类模型-评估指标(2):ROC曲线、 AUC值(ROC曲线下的面积)【只能用于二分类模型的评价】【不受类别数量不平衡的影响;不受阈值取值的影响】【AUC的计算方式:统计所有正负样本对中的正序对】

    评价二值分类器的指标很多,比如precision.recall.F1 score.P-R曲线等.但这些指标或多或少只能反映模型在某一方面的性能.相比而言,ROC曲线则有很多优点,经常作为评估二值分类器 ...

  7. 分类指标(评估指标)

    目录 一.评估指标 1.1 分类指标 1.1.1 Precision.Recall.Accuracy.ErrorRate 与 PR 1.1.2 TruePositiveRate.FalsePositi ...

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

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

  9. 【机器学习】27种确定性预测评估指标及其Python实现

    在时间序列预测中,评价指标的多样性为模型性能的评估带来多角度的参考意义.该篇推文列举了当前已知的27种确定性预测评估指标及其Python的实现,其中Python的评估指标函数实现基于numpy库(调用 ...

最新文章

  1. Spring (二) OOP V.S AOP
  2. python语言入门p-MicropPython的学习,如何从0到1?
  3. Swift 3.1新改动
  4. Require Busy dialog
  5. 这样去写你的 HTML
  6. 网络安全 攻击类型_网络攻击的类型| 网络安全
  7. Linux PS 命令详解
  8. 程序媛报告:调查了 12,000 名女性开发者发现,女性比男性更懂 Java!
  9. sqlserver2000换成mysql_MS SQL Server2000转换成MySQL
  10. Android:更好的自定义字体方案
  11. 转:有效沟通的四种工具
  12. Access数据库语句大全
  13. 【目标检测】SSD算法
  14. ACL2021 | 任务型和开放域对话系统
  15. afdsafdsafdsaf
  16. 【Cocos2d-x游戏引擎开发笔记(13)】Tiled Map Editor(一)
  17. Python一行代码能做什么,30个实用案例代码详解
  18. 使用wps表格、excel绘制方波图样
  19. 用python写一个万年历
  20. 2FA的完整形式是什么?

热门文章

  1. Unity 制作汽车后视镜
  2. 基于Python编写一个B站全自动抽奖的小程序
  3. 几个IT界都要知道的IT盛会和科技展会及举办时间(欢迎留言补充)
  4. 鼠标左键双击变成打开“属性”,其他按键失灵
  5. OpenGL ES入门 基本概念篇
  6. linux futex浅析
  7. windows下QT出现setGeometry: Unable to set geometry
  8. 动态规划解决编辑距离问题
  9. 关于 Kubernetes中secret、configmap实操的一些笔记
  10. web前端开发职业培训,前端应届生如何做一个职业规划