【AI基础】AUC/ROC指标

简介: 面我们将预测类别为1的称为positive(阳性),预测类别为0的negative(阴性);预测正确的称为true(真),预测错误的称为false(伪)。

一、先从混淆矩阵讲起

  • 下面我们将预测类别为1的称为positive(阳性),预测类别为0的negative(阴性);
  • 预测正确的称为true(真),预测错误的称为false(伪)。
  • image.png

上面的对应关系其实就是混淆矩阵了,现在引出【真阳率】(True positive)和【伪阳率】(False positive):

  • 前者TPRate(也叫Sensitivity)即将TP除以TP所在列之和,表示在所有真实类别为1的样本(正样本)中,预测为真(1)的比例:
  • image.png

二、ROC曲线登场

首先来看ROC曲线的定义,横轴为刚才的FPRate(伪阳率),纵坐标为TPRate(真阳率)。有一种特殊情况,横纵坐标这两个概率相等,即无论真实类别是1还是0,两者预测为1的概率相同(即对正负样本没啥区分能力),即如下直线:

image.png

显然上面这种情况不是我们想要的,对正负样本还没啥区分能力,我们希望将真实类别为1的样本,正确预测为1的概率即TPRate,大于将真实类别为0的样本,预测为1的概率即FPRate,对应的ROC曲线就是往上拱的样子(而且越拱越好):

image.png

这里注意我们将ROC曲线下的面积定义为AUC (Area Under Curve),而刚才说到这个ROC曲线越拱越好,拱到AUC面积接近为1,这时候如下图:

TPRate基本恒等于1,表示在所有真实类别为1的样本中(负样本),预测为真(1)的比例基本为1了!!

FPRate几乎恒等于0,表示在所有真实类别为0的样本中(负样本),全部都预测错为1的概率几乎为0,都基本预测为0呗(都正确了)!!

image.png

注意我们在画ROC曲线时是根据某个特定阈值下的TP率和FP率描点(坐标)的,和P-R曲线一样,ROC曲线也是通过遍历所有的阈值来绘制整条ROC曲线,如下图:

image.png

三、几个栗子分析

【栗子1】如果我们的模型分类结果如下:

image.png

混淆矩阵如下:

image.png

TPRate=3/4,FPRate=2/4,根据这个点画出对应ROC曲线如下,并且计算AUC面积为0.625。

image.png

【栗子2】而如果是利用逻辑回归预测结果如下(通过sigmoid函数输出对应的概率值):

image.png

需要设置阈值,比如阈值取为0.5,小于0.5为0,否则为1的label,这样得到的混淆矩阵和栗子1的情况是一样的,当然也可以设置阈值为其他数。然后依次使用所有预测值作为阈值,得到一系列的TPRate、FPRate,在坐标上描点、连线得到ROC曲线。

【栗子3】在反欺诈场景中,我们前提假设欺诈团伙为正样本,在正样本占全体样本很少时(如0.0001%),当如果用 a c c u r a c y accuracyaccuracy 作为我们模型的评估指标。

from sklearn import metrics
from sklearn.metrics import auc 
import numpy as np
y = np.array([1, 1, 2, 2])  
scores = np.array([0.1, 0.4, 0.35, 0.8])  
fpr, tpr, thresholds = metrics.roc_curve(y, scores, pos_label=2)
metrics.auc(fpr, tpr) 
# 0.75

五、ML常用评估指标

image.png

image.png

六、ML高阶评估指标

6.1 P-R 曲线

P-R 曲线,这里的 P 就是精确率 Precision,R 就是召回率 Recall。为了综合评价一个推荐模型的好坏,不仅要看模型在一个 Top n 值下的精确率和召回率,还要看到模型在不同 N 取值下的表现,甚至最好能绘制出一条 n 从 1 到 N,准确率和召回率变化的曲线。这条曲线就是 P-R 曲线。

P-R 曲线的横轴是召回率,纵轴是精确率。

对于一个推荐模型来说,它的 P-R 曲线上的一个点代表“在某一阈值下,模型将大于该阈值的结果判定为正样本,将小于该阈值的结果判定为负样本时,整体结果对应的召回率和精确率”。整条 P-R 曲线是通过从高到低移动正样本阈值生成的。如图 1 所示,它画了两个测试模型,模型 A 和模型 B 的对比曲线。其中,实线代表模型 A 的 P-R 曲线,虚线代表模型 B 的 P-R 曲线。

image.png

从图中我们可以看到,在召回率接近 0 时,模型 A 的精确率是 0.9,模型 B 的精确率是 1。这说明模型 B 预测的得分前几位的样本全部是真正的正样本,而模型 A 即使是得分最高的几个样本也存在预测错误的情况。

曲线分析:

随着召回率的增加,两个模型的精确率整体上都有所下降。特别是当召回率在 0.6 附近时,模型 A 的精确率反而超过了模型 B。这就充分说明了,只用一个点的精确率和召回率是不能全面衡量模型性能的,只有通过 P-R 曲线的整体表现,才能对模型进行更全面的评估。

AUC (Area Under Curve):AUC用于衡量P-R曲线的优劣。指的是 P-R 曲线下的面积大小,因此计算 AUC 值只需要沿着 P-R 曲线横轴做积分。AUC 越大,就证明推荐模型的性能越好。

6.2 ROC 曲线

第二个高阶指标,ROC 曲线,它也是一个非常常用的衡量模型综合性能的指标。

ROC 曲线的全称是 the Receiver Operating Characteristic 曲线,中文名为“受试者工作特征曲线”。ROC 曲线最早诞生于军事领域,而后在医学领域应用甚广,“受试者工作特征曲线”这一名称也正是来源于医学领域。

ROC 曲线的横坐标是 False Positive Rate(FPR,假阳性率),纵坐标是 True Positive Rate (TPR,真阳性率)。

image.png

和上面介绍精确度的介绍一样,这里的P 指的是真实的正样本数量,N 是真实的负样本数量;TP 指的是 P 个正样本中被分类器预测为正样本的个数,FP 指的是 N 个负样本中被分类器预测为正样本的个数。

1.gif

和 P-R 曲线一样,ROC 曲线也是通过不断移动模型正样本阈值生成的。如上面的动图,垂线其实就是我们的阈值,当垂线从右到左移动时,右边ROC曲线上的点,从下往上移动。如果来固定阈值,我们也可以看到左图中,其实和混淆矩阵中四个值是对应的:

image.png

(1)栗子1

ROC曲线的横轴是FPRate,纵轴是TPRate,当二者相等时,即y=x,如下图,这时候ROC曲线表示:对于不论真实类别是1还是0的样本,分类器预测为1的概率是相等的。

分类器对于正例和负例毫无区分能力,和抛硬币没什么区别,一个抛硬币的分类器是我们能想象的最差的情况,因此一般来说我们认为AUC的最小值为0.5(当然也存在预测相反这种极端的情况,AUC小于0.5,这种情况相当于分类器总是把对的说成错的,错的认为是对的,那么只要把预测类别取反,便得到了一个AUC大于0.5的分类器)。

image.png

(2)栗子2

假设测试集中一共有 20 个样本,模型的输出如下表所示,表中第一列为样本序号,Class 为样本的真实标签,Score 为模型输出的样本为正的概率,样本按照预测概率从高到低排序。在输出最终的正例、负例之前,我们需要指定一个阈值,并且设定预测概率大于该阈值的样本会被判为正例,小于该阈值的会被判为负例。

image.png

比如,我们指定 0.9 为阈值(又称为截断点额),那么只有第一个样本会被预测为正例,其他全部都是负例。

接下来,我们要做的就是动态地调整截断点,从最高的得分开始(实际上是从正无穷开始,对应着 ROC 曲线的零点),逐渐调整到最低得分。每一个截断点都会对应一个 FPR 和 TPR 的值,在 ROC 图上绘制出每个截断点对应的位置,再连接每个点之后,我们就能得到最终的 ROC 曲线了。那么 ROC 曲线上的点具体应该怎么确定呢?

确定几个点:

(1)当截断点选择为正无穷的时候,模型会把全部样本预测为负例,那 FP 和 TP 必然都为 0,FPRate 和 TPRate 也都为 0,因此曲线的第一个点就是 (0,0) 。

(2)当把截断点调整为 0.9 的时候,模型预测 1 号样本为正样本,并且这个样本也确实是正样本。因此,在 20 个样本中,当 TP=1,所有正例数量 P=10 的时候,TPR=TP/P=1/10。

在表中观察,没有预测错的正样本,也就是说当 FP=0,负样本总数 N=10 的时候,FPR=FP/N=0/10=0,对应着 ROC 图上的点 (0,0.1)。

image.png

(3)更直观的绘制 ROC 曲线的方法

(1)首先,根据样本标签统计出正负样本的数量,假设正样本数量为 P,负样本数量为 N。然后,我们把横轴的刻度间隔设置为 1/N,纵轴的刻度间隔设置为 1/P。

(2)接着,再根据模型输出的预测概率对样本进行从高到低的排序。

(3)最后,依次遍历样本。

同时,从零点开始绘制 ROC 曲线,每遇到一个正样本就沿纵轴方向绘制一个刻度间隔的曲线,每遇到一个负样本就沿横轴方向绘制一个刻度间隔的曲线,直到遍历完所有样本,曲线最终停在 (1,1) 这个点,整个 ROC 曲线就绘制完成了。

在绘制完 ROC 曲线后,我们也可以像 P-R 曲线一样,计算出 ROC 曲线的 AUC,AUC 越高,推荐模型的效果就越好。

七、考考你

(1)工业界在用指标评估排序列表结果时,最最常用的指标是啥?cmu的搜索引擎这门课的教授说MAP和NDCG是最常用的,其中NDCG应该是效果最好的,因为NDCG考虑到了每个数的实际相关性和模型预测出的排序顺序。

【答】离线主要用AUC和gAUC。但工业界离线指标主要是参考作用,最重要的还是在线指标。

(2)Diversity在推荐系统中重要吗?如果重要的话,是不是除了以上这些指标,还需要用到诸如Precision-Intent aware@K和alpha-NDCG这些指标进一步分析模型效果呢?

【答】diversity比较重要,但一般是secondary metric,一般不作为主要优化的指标

(3)在实际工作中,一般是如何定义正样本和负样本的呢?首先,这个正样本和负样本应该是应用户而异吧?其次,以电影推荐为例,对于某个用户A,我们是把用户A之前看过的电影都定义成正样本,然后没有看过的电影都标记为负样本嘛?还是有其他什么方法?

【答】正样本比较好说,就是你定义的一些正向的行为,比如点击、播放、购买等等。负样本其实看你的选择了,有纯random的,也有曝光未点击等等。

(4)个性化推荐,不是每个人的推荐结果都不一样吗。为啥说ROC、P-R是全量数据,我认为是针对每个人的全量物品推荐,文中的全量是指全量物品吗。mAP严格意义上说是用到了全量的用户和物品。

【答】ROC曲线,P-R曲线是对全量样本在一起排序,不区分用户,所以这里说是全量数据。

(5)P-R 曲线和 ROC 曲线,它们的优缺点分别是什么呢?在正负样本分布极不均衡的情况下,你觉得哪个曲线的表现会更稳定、更权威一点?

【答】ROC曲线。

FPR=FP/N,TPR=TP/P,当我们将负样本复制10倍时,TPR显然不会变,FPR是负样本中被预测为正样本的比例,这其实也是不变的,那整个ROC曲线也就没有变。PR曲线,精确率P=TP/(TP+FP),TP不变,FP增大,而召回率R没有变,显然ROC曲线更稳定一些。

相关文章
|
机器学习/深度学习 人工智能 算法
一文让你了解AI产品的测试 评价人工智能算法模型的几个重要指标
一文让你了解AI产品的测试 评价人工智能算法模型的几个重要指标
1092 0
一文让你了解AI产品的测试 评价人工智能算法模型的几个重要指标
|
人工智能 自然语言处理 监控
AI模型评估的指标
模型评估的指标
541 0
|
4天前
|
机器学习/深度学习 人工智能 算法
转载:【AI系统】关键设计指标
本文介绍了AI芯片的关键设计指标及其与AI计算模式的关系,涵盖计算单位(如OPS、MACs、FLOPs)、关键性能指标(精度、吞吐量、时延、能耗、成本、易用性)及优化策略,通过算术强度和Roofline模型评估AI模型在芯片上的执行性能,旨在帮助理解AI芯片设计的核心考量与性能优化方法。
转载:【AI系统】关键设计指标
|
20天前
|
机器学习/深度学习 人工智能 算法
【AI系统】关键设计指标
本文介绍了AI芯片设计中的关键指标与设计点,涵盖OPS、MACs、FLOPs等计算单位,以及精度、吞吐量、时延、能耗、成本和易用性等六大关键指标。文章还探讨了MACs和PE优化策略,以及通过算术强度和Roofline模型评估AI模型在特定芯片上的性能表现,为AI芯片的性能优化提供了理论依据和实践指导。
31 1
|
7月前
|
人工智能 开发框架 数据可视化
【AI大模型应用开发】【RAG评估】0. 综述:一文了解RAG评估方法、工具与指标
【AI大模型应用开发】【RAG评估】0. 综述:一文了解RAG评估方法、工具与指标
965 0
|
机器学习/深度学习 人工智能 供应链
2020 人工智能人才报告:AI 职位需求放缓,非技术素质将成重要考核指标
2019 年,人工智能技术(AI)持续保持惊人的发展速度。预计到 2030 年,AI 技术将为全球增加 15.7 万亿美元的商业价值。2020 年将成为 AI 研究、产品开发和商业化的关键之年。
3451 0
2020 人工智能人才报告:AI 职位需求放缓,非技术素质将成重要考核指标
|
人工智能 机器人
【经济学人报告】中国尚未做好迎接 AI 自动化变革准备,多项指标落后
ABB联合经济学人智库发布的“自动化准备指数”衡量了各国应对即将到来的智能自动化浪潮的能力。它衡量创新环境、教育政策和劳动力市场政策三大类别,将20国集团和5个代表世界不同地区的国家进行排名,意外的是,中美两国居然没进前三名。
2763 0
|
5天前
|
机器学习/深度学习 人工智能 自然语言处理
转载:【AI系统】AI的领域、场景与行业应用
本文概述了AI的历史、现状及发展趋势,探讨了AI在计算机视觉、自然语言处理、语音识别等领域的应用,以及在金融、医疗、教育、互联网等行业中的实践案例。随着技术进步,AI模型正从单一走向多样化,从小规模到大规模分布式训练,企业级AI系统设计面临更多挑战,同时也带来了新的研究与工程实践机遇。文中强调了AI基础设施的重要性,并鼓励读者深入了解AI系统的设计原则与研究方法,共同推动AI技术的发展。
转载:【AI系统】AI的领域、场景与行业应用
|
5天前
|
人工智能 缓存 异构计算
云原生AI加速生成式人工智能应用的部署构建
本文探讨了云原生技术背景下,尤其是Kubernetes和容器技术的发展,对模型推理服务带来的挑战与优化策略。文中详细介绍了Knative的弹性扩展机制,包括HPA和CronHPA,以及针对传统弹性扩展“滞后”问题提出的AHPA(高级弹性预测)。此外,文章重点介绍了Fluid项目,它通过分布式缓存优化了模型加载的I/O操作,显著缩短了推理服务的冷启动时间,特别是在处理大规模并发请求时表现出色。通过实际案例,展示了Fluid在vLLM和Qwen模型推理中的应用效果,证明了其在提高模型推理效率和响应速度方面的优势。
云原生AI加速生成式人工智能应用的部署构建
|
5天前
|
机器学习/深度学习 人工智能 物联网
AI赋能大学计划·大模型技术与应用实战学生训练营——电子科技大学站圆满结营
12月05日,由中国软件行业校园招聘与实习公共服务平台携手阿里魔搭社区共同举办的AI赋能大学计划·大模型技术与产业趋势高校行AIGC项目实战营·电子科技大学站圆满结营。
AI赋能大学计划·大模型技术与应用实战学生训练营——电子科技大学站圆满结营