前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分类评估方法-召回率、ROC与AUC

分类评估方法-召回率、ROC与AUC

作者头像
唔仄lo咚锵
发布2022-10-08 10:37:20
8470
发布2022-10-08 10:37:20
举报

文章目录

精确率与召回率


精确率(Precision)与召回率(Recall)是分类任务中的常用指标,首先需要知道混淆矩阵。

在二分类问题中,我们把样例的真实类别与分类模型预测的预测类别,进行排列组合,正例是类别1,反例是类别0,得到如下4种情形:

  • 真正例(True Positive,TP)
  • 假反例(False Negative,FN)
  • 假正例(False Positive,FP)
  • 真反例(True Negative,TN)

显然,四者之和等于样例总数,混淆矩阵如下:

在这里插入图片描述
在这里插入图片描述

精确率

P

是所有预测类别为1的样本中,真实类别为1的比例,表示查的是准不准。

P=\frac{TP}{TP+FP}
在这里插入图片描述
在这里插入图片描述

召回率

R

是所有真实类别为1的样本中,预测类别为1的比例,表示查的是全不全。

R=\frac{TP}{TP+FN}
在这里插入图片描述
在这里插入图片描述

由于总数是固定的,精确率越高则召回率越低,反之亦然,也就是说两者是矛盾的,难以两全其美。

P

为纵坐标,

R

为横坐标,构建P-R图,如果一个模型A的P-R曲线完全包住模型B,自然模型A比模型B更优,其精准率和召回率都大于B。

但如果出现模型A的精确率比模型B好,而模型B的召回率又比模型A好,即P-R图中出现交点,此时就不好判断两个模型孰优孰劣了,各有千秋。

此时可以综合考虑精确率和召回率,定义F1度量。

F1度量


F_1=\frac{2TP}{2TP+FN+FP}=\frac{2PR}{P+R}
F1

度量综合考虑了精确率

P

和召回率

R

两个指标,反映了模型的稳健性。

当然了,在实际应用场景中,可能对精确率和召回率有偏重,可以乘以加权权重

\beta

推广到多分类任务中,由于混淆矩阵是对应正反两个类别的,而多分类中类别大于2。使用组合,将组合中每两个类别生成一个对应矩阵,并计算F1,最后再计算所有F1的平均值,得到宏F1(macro-F1)。 类似的,可以计算宏精准率(macro-P)、宏召回率(macro-R)。

插播反爬信息 )博主CSDN地址:https://wzlodq.blog.csdn.net/

在sklearn库中,可以调用classification_report()计算这些指标。

from sklearn.metrics import classification_report
print(classification_report(y_test, y_pred))
在这里插入图片描述
在这里插入图片描述

ROC与AUC


上述指标对于数据相对平衡时,是可以提供一个很好的参考。但是如果对于极不平衡的数据,上述指标就不能正确反映模型的优劣了。

比如肺癌数据集中,99个是肺癌样本,1个不是肺癌样本。如果分类模型不管三七二十一,对于输入全部判为肺癌,那它的正确率仍高达99%。

对于这种不平衡的情况,我们需要参考ROC曲线和AUC指标。

首先定义

TPR

FPR

真正例率(True Positive Rate,TPR)是所有真实类别为1的样本中,预测类别为1的比例:

TPR=\frac{TP}{TP+FN}
在这里插入图片描述
在这里插入图片描述

假正例率(False Positive Rate,FPR)是所有真实类别为0的样本中,预测类别为0的比例:

FPR=\frac{FP}{FP+TN}
在这里插入图片描述
在这里插入图片描述

ROC曲线的横坐标就是

FPR

,纵坐标就是

TPR

,其全称是Receiver Operating Characteristic,受试者工作特征。当

FPR

=

TPR

时,也就是对角线(下图虚线),表示无论真实类别是0还是1的样本,分类模型预测预测为1的概率是想等的。当ROC曲线越往左上,即

TPR

越接近1时,表示模型越好,反之越差。

在这里插入图片描述
在这里插入图片描述

图片摘自网络。

与P-R图存在相同的问题,如果两个模型的POC曲线有交点时,也不好判断孰优孰劣。此时可以通过AUC指标来判断。

AUC全称Area Under ROC Curve,即ROC曲线下的面积,AUC越大越接近1,则表示模型越好。

可以使用sklearn库中roc_auc_score()函数来计算ROC下面积,即AUC。 注意正例1反例0,传参记得处理数据。

from sklearn.metrics import roc_auc_score
print(roc_auc_score(y_test, y_pred))
在这里插入图片描述
在这里插入图片描述

原创不易,请勿转载本不富裕的访问量雪上加霜 ) 博主首页:https://wzlodq.blog.csdn.net/ 来都来了,不评论两句吗👀 如果文章对你有帮助,记得一键三连❤

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-10-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 精确率与召回率
  • F1度量
  • ROC与AUC
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档