一文详解人工智能分类方面的KPI评价标准:混淆矩阵、TP、FP、FN、TN、P-R曲线图、ROC曲线图

本文主要是介绍一文详解人工智能分类方面的KPI评价标准:混淆矩阵、TP、FP、FN、TN、P-R曲线图、ROC曲线图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

样本概念

混淆矩阵理论知识

概念

TP、FP、FN、TN介绍

概念

TP

FP

FN

TN

备注

关系解释

Key Performance Indicator

Precision

标准介绍

概念介绍

样本概念介绍

公式

实际计算

Recall

标准介绍

概念介绍

样本概念介绍

公式

实际计算

F1 Score

标准介绍

公式

实际计算

Recall

标准介绍

概念介绍

样本概念介绍

公式

实际计算

F1 Score

标准介绍

公式

实际计算

Accuracy介绍

标准介绍

概念介绍

样本概念介绍

实际计算

最终结果

备注

P-R曲线图

ROC曲线图

敏感性

医学角度

深度学习角度

特异性

医学角度

深度学习角度

TPR

FPR

结尾


样本概念

在深度学习过程中我们会用数据集来做训练,如我们做人脸识别时需要不同的人脸特征作为数据集,这些数据集可以也可以叫做样本,样本也分为两种类型,分别是正样本与负样本,正样本就是我们要识别的人脸特征,被我们打标记的数据集,而负样本就是没有被打标记的样本,主要负责给模型提供参考点,增强模型的强壮性。

负样本有一定要求,不能是与正样本毫无联系的数据集,如我们训练人脸,那么首先我们需要考虑人会出现在哪种场景下,一般有人的场景周围都有什么,例如:凳子,电脑,空荡荡的房间,床,水杯,空调,街道等这些可能出现人的地方,或者穿在人身上的衣服,这些都可以算是负样本,供机器学习来学习作为参考点,一旦图片中出现负样本的特征则猜测图片中具有人,然后对图像做深度卷积找到人脸特征,其次是当图像中出现多个特征时忽略接近负样本的特征。

混淆矩阵理论知识

混淆矩阵(Confusion Matrix)又称误差矩阵,在深度学习方面被称为可能性表格,它的作用是对一组分类数据进行指标评价的矩阵,它由N行N列组成,也就是二维数组,每行都是一个分类输入源,每列里记录了分类,它就是一个记录分类结构的矩阵。

概念

如我们有这样一个模型,它是由“狗、兔子、鸡、老虎”这些训练集特征训练而成的一个模型,那么我们需要对这个模型进行批判来确定模型的准确率,来确定它的好坏以及分类结果这样才能对模型进行调整,如下图:

我们可以看到输入源,第一组输入是五十张不同狗的照片,对模型里分类全连接层进行预测时的结果是:30张为狗的照片,7张被识别成了兔子,6张被识别成了鸡,还有7张被识别成了老虎,混淆矩阵主要作用就是记录这个,通过混淆矩阵的记录值我们就能明确看出当前训练情况,可以看出训练还不是特别优越,所以还需要进行训练集调整或算法上的调整,或者将训练次数增多等等,来优化模型。

 在经历N次迭代之后变成了这样:

虽然还是有一点瑕疵,因为老虎这组数据预测上,有一张被预测成了鸡,所以我们可以通过找到那张照片来分析为什么会被识别成鸡,也可以直接调整算法或继续训练直到混淆矩阵变得非常可观。

TP、FP、FN、TN介绍

概念

这里以理论知识里的一组混淆矩阵数据做示例

这是混淆矩阵的输出,我们将上图狗的实际识别成功的数据进行统计分析,得到这样一组数据:

这里解释一下这组数据是什么意思,在解释之前需要了解几个名词:

TP

TP全称True Postive(真阳性)

概念角度

预测结果是真,实际结果也是真

样本角度

表示把正样本预测为正样本;

FP

FP全称False Positive(假阳性)

概念角度

预测结果为真,实际为假

样本角度

表示把负样本预测为正样本

FN

FN全称False Negative(假阴性)

概念角度

预测为假,实际上为真

样本角度

表示把正样本预测为负样本

TN

TN全称True Negative(真阴性)

概念角度

预测结果为假,实际上也为假

样本角度

表示把负样本预测为负样本;

备注

TP、FP、FN、TN都是分类统计的指标,用来计算准确率的因子值

关系解释

上图的数据与TP、FP、FN、TN是对应关系

这里解释一下这些数据是怎么统计来的,刚开始说的计算狗的精确度,我们的混淆矩阵数据输出如下:

 TP即预测结果为真实际结果也为真,那么可以看到狗的分类里是30,所以它也就是30

 FP预测结果为真实际上为假,我们可以看到兔子这组训练集里22张被预测为了狗,鸡31,老虎12,所以加起来是:65,因为这些数据集虽然被预测为真,但实际上它们并不是狗

 

FN预测为假实际上为真,我们从第一列数据就可以得出我们输入了50张狗的照片,只有30张被识别成了狗,其它的20张被识别其它的,所以预测结果是假的,但是实际上这几种照片是狗

 TN就是预测结果为假,实际上也是假,我们直接把其它训练集预测不是狗的总数加起来就可以了,因为这些数据没有被识别成狗,它们被识别成了其它的,也的的确确是假的

 一般我们经过上面的分析计算后可以得到这样的一组格式数据:

将我们的真实数据填写上去就变成了这样:

PP(预测结果为正样本的数量合集),PN(预测结果为负样本的结果合集)

166

95

71

703020
1166551

Key Performance Indicator

Key Performance Indicator简称KPI即关键绩效指标

下面是在深度学习方面的KPI的几个指标

有了上面的数据因子,我们就可以拿这些因子来评价我们的模型,如我们评价预测狗的指标

Precision

标准介绍

精准率,查准率

概念介绍

预测的数据集中有多少张样本图片是狗

样本概念介绍

预测为正的样本中有多少是真正的正样本

公式

预测为真阳性/所有预测结果都为真阳性的样本,包括即便结果是错的 Precision=TPTP+FP

实际计算

我们用刚刚统计预测狗的混淆矩阵数据:

Precision=30/30+65

Precision=0.31578947

在做一个百分比计算

0.31578947*100=31%

所以预测狗的精准率达到31%

Recall

标准介绍

召回率,查全率

概念介绍

预测数据集中有多少样本图片被正确预测成狗了,这个样本指的是单一狗的样本,不包括非狗的样本

样本概念介绍

即表示样本中有多少正样本被正确预测了

公式

(预测为1且正确预测的样本数)/(所有真实情况为1的样本数) = TP/(TP+FN) Recall=TPTP+FN

实际计算

Recall=30/30+20

Recall=0.6

百分比:0.6*100=60%

召回率=60%

F1 Score

标准介绍

精准率和召回率的调和平均数,主要应用于加权重方面,类似平均误差函数

公式

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

实际计算

我们用刚刚统计预测狗的混淆矩阵数据:

 Precision=30/30+65

Precision=0.31578947

在做一个百分比计算

0.31578947*100=31%

所以预测狗的精准率达到31%

Recall

标准介绍

召回率,查全率

概念介绍

预测数据集中有多少样本图片被正确预测成狗了,这个样本指的是单一狗的样本,不包括非狗的样本

样本概念介绍

即表示样本中有多少正样本被正确预测了

公式

(预测为1且正确预测的样本数)/(所有真实情况为1的样本数) = TP/(TP+FN)

Recall=\frac{TP}{TP+FN}

实际计算

Recall=30/30+20

Recall=0.6

百分比:0.6*100=60%

召回率=60%

F1 Score

标准介绍

精准率和召回率的调和平均数,主要应用于加权重方面,类似平均误差函数

公式

F1s=\frac{2 x Precision x Recall}{Precision + Recall}

实际计算

用我们上面的数据:

Precision=0.31

Recall=0.6

F1s=2*0.31*0.6/0.31+0.6=1.8

调和平均数不能做百分比运算,它的主要作用是用于加权,类似误差函数,用于补偿

Accuracy介绍

标准介绍

精确率,准确率

概念介绍

所有样本中,被正确预测的样本数量,这个样本里包括狗和其它的样本,所有样本的数量里被成功识别为狗的数量

样本概念介绍

被正确预测的样本占所有预测样本的比例

Accuracy=\frac{TP + TN}{TP + TN + FP + FN}

实际计算

Accuracy = 30+51/30+51+65+20

Accuracy = 0.48795181

百分比:0.48795181*100=48%

精确率为48%

最终结果

经过上面的计算统计,我们预测狗的最终数据如下:

PrecisionRecallF1 ScoreAccuracy
31%60%1.848%

备注

从识别狗时我们会出现其它图片,非狗的图片,这些在这次训练集中可以算是负样本,只有狗的图片才是正样本

P-R曲线图

在上述指标中我们会期望两个标准越高越好:Precision(精准率:样本中有多少是正样本),Recall(召回率:正样本中有多少被正确识别了),这两个标准可以衡量出正样本的正确率,如果它非常高则代表你的正样本都被识别了。

这里说一下为什么不用Accuracy,因为Accuray是代表着所有样本中被正确识别的样本,它的值是属于总和样本的,包括负样本也参与运算了数值比较广泛,而Precision和Recall会相结合会更加精确,这个方法也叫置信度,就是判断输入样本被识别为正样本的概率是多少。

所以这两个指标被称为P-R标准,一般用于绘制曲线图,也称为P-R曲线图,

我们可以使用Python的Matplotlib库来画曲线图

绘图也非常简单,在P-R曲线图中,Precision代表Y,Recall代表X,就拿本篇的数据来说,测试数据集狗的P和R分别是:0.31和0.6,分别对应Y:0.32,X:0.6

代码如下:

import numpy as np
import matplotlib.pyplot as pltx=[0,0.6]
y=[0,0.31]
plt.figure()
plt.plot(x,y)
plt.savefig("test.jpg")

运行之后本地就会生成一个test.jpg的图像文件,打开之后显示如下:

曲线非常平滑,这个原因是因为我们的样本数据非常少,就一个,所以非常平滑,通常情况下越平滑意味着模型置信度越好,准确率越高。

我们尝试增加更多的数据集:

import numpy as np
import matplotlib.pyplot as pltx=[0,0.6,0.67,0.69,0.71,0.77,0.81]
y=[0,0.31,0.47,0.51,0.58,0.66,0.94]
plt.figure()
plt.plot(x,y)
plt.savefig("test.jpg")

 运行输出如下:

 在输入数据时记得从大到小排序,因为曲线图其实是趋势图,如果你的数据不是从小到大排序的看起来就会非常的乱,逐步增长代表我们的预测结果逐步变好,代表我们的模型置信度越来越高,理论上来说P与R都应增长为(0,1),平滑增长没有折线的,因为这样的模型置信度是最高的。

ROC曲线图

ROC曲线全称Receiver Operating Characteristic Curve(接受者操作特性曲线),又称感受性曲线(sensitivity curve),在解释ROC曲线之前需要先了解两个概念:TPR(True Positive Rate 真阳性率)、FPR(False Positive Rate 真、假阳性率),它们俩是构建ROC的主要变量,ROC曲线图主要思路是利用构图的方式来表示敏感性和特异性,ROC最早起源于医学上,用于表示医学诊断结果,其中敏感性和特异性是统计学上的名词,它俩的代表的含义分别如下:

敏感性

敏感性也称敏感度

医学角度

敏感性即肿瘤化验组中化验结果阳性比例,敏感性越接近100%就越表明该肿瘤能被检测出真阳性的肿瘤患者。

深度学习角度

预测样本中,为正样本的比例,比率越接近100%代表能正确预测的概率越大

特异性

特异性也称特异度,它与敏感度相反

医学角度

特异性即肿瘤化验组中化验结果阴性比例,特意性越接近100%就越表明该肿瘤能被检测出假阳性的患者。

深度学习角度

预测样本中,为负样本的比例,比率越接近100%代表样本被错误预测的概率越大

在深度学习上敏捷性与特异性对应是TPR与FPR,它俩的概念如下:

TPR

TPR全称True Positive Rate即真阳性率,即表示预测样本中所有被认为是正样本的数据,即预测是正样本实际也是正样本(TP)和预测为负样本实际上是正样本(FN)的数量,在曲线中它代表Y轴

它的算法公式如下:

TPR=\frac{TP}{TP + FN}

FPR

FPR全称Flase Positive Rate假阳性率,即预测结果为正样本实际上为负样本(FP)和预测结果为负样本实际上也是负样本(TN)的集合,在曲线中它代表X轴

它的算法公式如下:
TPR=\frac{FP}{FP + TN}

总的来说ROC曲线图就是统计一组数据的正负比率然后用曲线的方式显示出来,用于表示预测正负的概率。

我们使用Python进行绘制:

import numpy as np
import matplotlib.pyplot as pltx=[0,0.15,0.17,0.24,0.37,0.47,0.50]
y=[0,0.70,0.77,0.79,0.81,0.85,0.90]
plt.figure()
plt.plot(x,y)
plt.savefig("test.jpg")

运行结果:

结尾

可以把本文中的正样本与负样本理解为真或假,0/1

一般情况下我们训练好模型之后都会使用上述KPI进行评价之后可以得到如下一个表格与曲线图:

PPV=精确度

ACC=精准度

TPR=真阳率

FPR=假阳率

有了上图这组数据后我们进行P-R曲线图绘与ROC曲线图用来表示置信度与预测概率,它们俩的曲线应相似,因为它们所表示的结果都偏向于预测正确的角度。

P-R曲线

ROC曲线

 

这篇关于一文详解人工智能分类方面的KPI评价标准:混淆矩阵、TP、FP、FN、TN、P-R曲线图、ROC曲线图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/200305

相关文章

spring中的ImportSelector接口示例详解

《spring中的ImportSelector接口示例详解》Spring的ImportSelector接口用于动态选择配置类,实现条件化和模块化配置,关键方法selectImports根据注解信息返回... 目录一、核心作用二、关键方法三、扩展功能四、使用示例五、工作原理六、应用场景七、自定义实现Impor

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF

CSS3中的字体及相关属性详解

《CSS3中的字体及相关属性详解》:本文主要介绍了CSS3中的字体及相关属性,详细内容请阅读本文,希望能对你有所帮助... 字体网页字体的三个来源:用户机器上安装的字体,放心使用。保存在第三方网站上的字体,例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字