混淆矩阵、准确率、精确率/查准率、召回率/查全率、F1值、ROC曲线的AUC值

  准确率、精确率(查准率)、召回率(查全率)、F1值、ROC曲线的AUC值,都可以作为评价一个机器学习模型好坏的指标(evaluation metrics),而这些评价指标直接或间接都与混淆矩阵有关,前四者可以从混淆矩阵中直接计算得到,AUC值则要通过ROC曲线进行计算,而ROC曲线的横纵坐标又和混淆矩阵联系密切,所以在了解这些评价指标之前,先知道什么是混淆矩阵很有必要,也方便记忆。

1.混淆矩阵

  对于一个二分类问题,我们可以得到如表 1所示的的混淆矩阵(confusion matrix):

表 1:混淆矩阵

  Actual class
positive class negative class
Predicted class positive class True Positive(TP) False Positive(FP)
negative class False Negative(FN) True Negative(TN)

表 1 所示的混淆矩阵中,行表示数据在模型上的预测类别(predicted class/predicted condition),列表示数据的真实类别(actual class/true condition)。在看混淆矩阵时,要分清样本的真实类别和预测类别,有些地方的行列表示可能和这里不一致。在sklearn中,二分类问题下的混淆矩阵需要分别将表 1 中的predicted class和Actual class对调,将横纵坐标的positive class和negative class都分别对调,再重新计算混淆矩阵。

  通过混淆矩阵,我们可以很直观地看清一个模型在各个类别(positive和negative)上分类的情况。

表 2:TP、FP、FN、TN

TP 真实类别为positive,模型预测的类别也为positive
FP 预测为positive,但真实类别为negative,真实类别和预测类别不一致
FN 预测为negative,但真实类别为positive,真实类别和预测类别不一致
TN 真实类别为negative,模型预测的类别也为negative

  TP、FP、TN、FN,第二个字母表示样本被预测的类别,第一个字母表示样本的预测类别与真实类别是否一致。

2.准确率

  准确率(accuracy)计算公式如下所示:

\begin{equation}\label{equ:accuracy}
\mbox{accuracy} = \frac{TP+TN}{TP+TN+FP+FN} = \frac{TP+TN }{\mbox{all data}}
\end{equation}

准确率表示预测正确的样本(TP和TN)在所有样本(all data)中占的比例。

  在数据集不平衡时,准确率将不能很好地表示模型的性能。可能会存在准确率很高,而少数类样本全分错的情况,此时应选择其它模型评价指标。

3.精确率(查准率)和召回率(查全率)

  positive class的精确率(precision)计算公式如下:

\begin{equation}\label{equ:precision}
\mbox{precision} = \frac{TP}{TP+FP} = \frac{TP}{\mbox{预测为positive的样本}}
\end{equation}

  positive class的召回率(recall)计算公式如下:

\begin{equation}\label{equ:recall}
\mbox{recall} = \frac{TP}{TP+FN} = \frac{TP}{\mbox{真实为positive的样本}}
\end{equation}

  positive class的精确率表示在预测为positive的样本中真实类别为positive的样本所占比例;positive class的召回率表示在真实为positive的样本中模型成功预测出的样本所占比例。    

  positive class的召回率只和真实为positive的样本相关,与真实为negative的样本无关;而精确率则受到两类样本的影响。

4.$F_1$值和$F_\beta$值

  $F_1$值的计算公式如下:
\begin{equation}\label{equ:f1}
F_1 = \frac{2}{\frac{1}{\mbox{precision}}+\frac{1}{\mbox{recall}}} = \frac{2*\mbox{precision}*\mbox{recall}}{\mbox{precision}+\mbox{recall}}
\end{equation}
$F_1$值就是精确率和召回率的调和平均值,$F_1$值认为精确率和召回率一样重要。

  $F_\beta$值的计算公式如下:
\begin{equation}\label{equ:fbeta}
F_\beta = \frac{1+\beta^2}{\frac{1}{\mbox{precision}}+\frac{\beta^2}{\mbox{recall}}} = \frac{(1+\beta^2)*\mbox{precision}*\mbox{recall}}{\beta^2*\mbox{precision}+\mbox{recall}}
\end{equation}
在$\beta = 1$时,$F_\beta$就是$F_1$值,此时$F_\beta$认为精确率和召回率一样重要;当$\beta > 1$时,$F_\beta$认为召回率更重要;当$0< \beta < 1$时,$F_\beta$认为精确率更重要。除了$F_1$值之外,常用的还有$F_2$和$F_{0.5}$。

5.ROC曲线及其AUC值

  AUC全称为Area Under Curve,表示一条曲线下面的面积,ROC曲线的AUC值可以用来对模型进行评价。ROC曲线如图 1 所示:

图 1:ROC曲线

(注:图片摘自https://en.wikipedia.org/wiki/Receiver_operating_characteristic

  ROC曲线的纵坐标True Positive Rate(TPR)在数值上就等于positive class的recall,记作recall$_{positive}$,横坐标False Positive Rate(FPR)在数值上等于(1 - negative class的recall),记作(1 - recall$_{negative}$)如下所示:
\begin{equation}\label{equ:tpr}
\begin{split}
\mbox{TPR} &= \frac{TP}{TP + FN} \\ &= \mbox{recall$_{positive}$}
\end{split}
\end{equation}
\begin{equation}\label{equ:fpr}
\begin{split}
\mbox{FPR} &= \frac{FP}{FP + TN} = \frac{FP + TN -TN}{FP + TN} = 1 - \frac{TN}{FP + TN} \\ &= 1 - \mbox{recall$_{negative}$}
\end{split}
\end{equation}
  通过对分类阈值$\theta$(默认0.5)从大到小或者从小到大依次取值,我们可以得到很多组TPR和FPR的值,将其在图像中依次画出就可以得到一条ROC曲线,阈值$\theta$取值范围为$[0, 1]$。

  ROC曲线在图像上越接近左上角$(0, 1)$模型越好,即ROC曲线下面与横轴和直线FPR = 1围成的面积(AUC值)越大越好。直观上理解,纵坐标TPR就是recall$_{positive}$值,横坐标FPR就是(1 - recall$_{negative}$),前者越大越好,后者整体越小越好,在图像上表示就是曲线越接近左上角$(0, 1)$坐标越好。

  图 1展示了3个模型的ROC曲线,要知道哪个模型更好,则需要计算每条曲线的AUC值,一般认为AUC值越大越好。AUC值由定义通过计算ROC曲线、横轴和直线FPR = 1三者围成的面积即可得到。

原文地址:https://www.cnblogs.com/wuliytTaotao/p/9285227.html

时间: 2024-10-14 09:37:53

混淆矩阵、准确率、精确率/查准率、召回率/查全率、F1值、ROC曲线的AUC值的相关文章

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

yu Code 15 Comments 机器学习(ML),自然语言处理(NLP),信息检索(IR)等领域,评估(Evaluation)是一个必要的 工作,而其评价指标往往有如下几点:准确率(Accuracy),精确率(Precision),召回率(Recall)和F1-Measure.(注: 相对来说,IR 的 ground truth 很多时候是一个 Ordered List, 而不是一个 Bool 类型的 Unordered Collection,在都找到的情况下,排在第三名还是第四名损失并

准确率、精确轨、召回率等

作者:邓小乔链接:https://www.zhihu.com/question/30643044/answer/224360465 正好最近刚做了个项目是关于imbalanced data的,又深入研究了一把各种evaluation metric,在这儿分享一下. 为了方便,以下专业名词都用英文替代了.本人留学狗,脑子不好使容易蹦英文单词,不喜勿喷哈. 准确率 - accuracy 精确率 - precision 召回率 - recall F1值 - F1-score ROC曲线下面积 - RO

衡量机器学习模型的三大指标:准确率、精度和召回率。

连接来源:http://mp.weixin.qq.com/s/rXX0Edo8jU3kjUUfJhnyGw 倾向于使用准确率,是因为熟悉它的定义,而不是因为它是评估模型的最佳工具!  精度(查准率)和召回率(查全率)等指标对衡量机器学习的模型性能是非常基本的,特别是在不平衡分布数据集的案例中,在周志华教授的「西瓜书」中就特别详细地介绍了这些概念. 什么是分布不平衡的数据集? 倘若某人声称创建了一个能够识别登上飞机的恐怖分子的模型,并且准确率(accuracy)高达 99%.你相信吗?好了,有这么

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

参考资料:https://zhuanlan.zhihu.com/p/46714763 ROC/AUC作为机器学习的评估指标非常重要,也是面试中经常出现的问题(80%都会问到).其实,理解它并不是非常难,但是好多朋友都遇到了一个相同的问题,那就是:每次看书的时候都很明白,但回过头就忘了,经常容易将概念弄混.还有的朋友面试之前背下来了,但是一紧张大脑一片空白全忘了,导致回答的很差. 我在之前的面试过程中也遇到过类似的问题,我的面试经验是:一般笔试题遇到选择题基本都会考这个率,那个率,或者给一个场景让

精确率和召回率

我自己通俗的解释: 查全率=召回率=集合里面一共有多少个A,我们正确识别出多少个A,两个比一下 查准率=精确率=在识别出的结果A集合里面,有多少是真正的A,两个比一下 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "PingFang SC"; color: #454545 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #4545

精确率与召回率,RoC曲线与PR曲线

在机器学习的算法评估中,尤其是分类算法评估中,我们经常听到精确率(precision)与召回率(recall),RoC曲线与PR曲线这些概念,那这些概念到底有什么用处呢? 首先,我们需要搞清楚几个拗口的概念: 1. TP, FP, TN, FN True Positives,TP:预测为正样本,实际也为正样本的特征数 False Positives,FP:预测为正样本,实际为负样本的特征数 True Negatives,TN:预测为负样本,实际也为负样本的特征数 False Negatives,

精确率、召回率、F1 值、ROC、AUC 各自的优缺点是什么?

作者:竹间智能 Emotibot链接:https://www.zhihu.com/question/30643044/answer/161955532来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 精确率(Precision)是指在所有系统判定的“真”的样本中,确实是真的的占比,就是TP/(TP+FP). 召回率(Recall)是指在所有确实为真的样本中,被判为的“真”的占比,就是TP/(TP+FN). FPR(False Positive Rate),又被称为“

分类算法-2.精准率和召回率曲线

精准率和召回率是两个不同的评价指标,很多时候它们之间存在着差异,具体在使用的时候如何解读精准率和召回率,应该视具体使用场景而定 有些场景,人们可能更注重精准率,如股票预测系统,我们定义股票升为1,股票降为0,我们更关心的是未来升的股票的比例,而在另外一些场景中,人们更加注重召回率,如癌症预测系统,定义健康为1,患病为0,我们更关心癌症患者检查的遗漏情况. F1 Score F1 Score 兼顾精准率和召回率,它是两者的调和平均值 \[\frac{1}{F1} = \frac{1}{2}(\fr

准确率,精确率,召回率,F-measure 之间的关系

总结: 模型条件放宽,负类被误判为正类的可能性就变大(即FP变大)精确率和准确率会受影响(变小) 模型条件变严格,正类有可能被误判为负类(即FN变大)召回率会变小 F-measure是一种统计量,F-Measure又称为F-Score,F-Measure是Precision和Recall加权调和平均,是IR(信息检索)领域的常用的一个评价标准,常用于评价分类模型的好坏. F1=2*PR  / (P+R) (P精确率,R召回率) 一般通过找到最大的F1,可以找到模型的最优阀值(阀值并不是最大最好,