一文详解人工智能分类方面的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

相关文章

Mysql数据库聚簇索引与非聚簇索引举例详解

《Mysql数据库聚簇索引与非聚簇索引举例详解》在MySQL中聚簇索引和非聚簇索引是两种常见的索引结构,它们的主要区别在于数据的存储方式和索引的组织方式,:本文主要介绍Mysql数据库聚簇索引与非... 目录前言一、核心概念与本质区别二、聚簇索引(Clustered Index)1. 实现原理(以 Inno

使用python生成固定格式序号的方法详解

《使用python生成固定格式序号的方法详解》这篇文章主要为大家详细介绍了如何使用python生成固定格式序号,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录生成结果验证完整生成代码扩展说明1. 保存到文本文件2. 转换为jsON格式3. 处理特殊序号格式(如带圈数字)4

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

MyBatis常用XML语法详解

《MyBatis常用XML语法详解》文章介绍了MyBatis常用XML语法,包括结果映射、查询语句、插入语句、更新语句、删除语句、动态SQL标签以及ehcache.xml文件的使用,感兴趣的朋友跟随小... 目录1、定义结果映射2、查询语句3、插入语句4、更新语句5、删除语句6、动态 SQL 标签7、ehc

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

一文解析C#中的StringSplitOptions枚举

《一文解析C#中的StringSplitOptions枚举》StringSplitOptions是C#中的一个枚举类型,用于控制string.Split()方法分割字符串时的行为,核心作用是处理分割后... 目录C#的StringSplitOptions枚举1.StringSplitOptions枚举的常用