【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曲线更稳定一些。

相关文章
|
9月前
|
人工智能 自然语言处理 监控
AI模型评估的指标
模型评估的指标
370 0
|
机器学习/深度学习 人工智能 算法
一文让你了解AI产品的测试 评价人工智能算法模型的几个重要指标
一文让你了解AI产品的测试 评价人工智能算法模型的几个重要指标
887 0
一文让你了解AI产品的测试 评价人工智能算法模型的几个重要指标
|
12天前
|
人工智能 开发框架 数据可视化
【AI大模型应用开发】【RAG评估】0. 综述:一文了解RAG评估方法、工具与指标
【AI大模型应用开发】【RAG评估】0. 综述:一文了解RAG评估方法、工具与指标
32 0
|
机器学习/深度学习 人工智能 供应链
2020 人工智能人才报告:AI 职位需求放缓,非技术素质将成重要考核指标
2019 年,人工智能技术(AI)持续保持惊人的发展速度。预计到 2030 年,AI 技术将为全球增加 15.7 万亿美元的商业价值。2020 年将成为 AI 研究、产品开发和商业化的关键之年。
3329 0
2020 人工智能人才报告:AI 职位需求放缓,非技术素质将成重要考核指标
|
人工智能 机器人
【经济学人报告】中国尚未做好迎接 AI 自动化变革准备,多项指标落后
ABB联合经济学人智库发布的“自动化准备指数”衡量了各国应对即将到来的智能自动化浪潮的能力。它衡量创新环境、教育政策和劳动力市场政策三大类别,将20国集团和5个代表世界不同地区的国家进行排名,意外的是,中美两国居然没进前三名。
2733 0
|
机器学习/深度学习 人工智能 自然语言处理
搜狗翻宝Pro机再次开挂,智能翻译硬件成中国人工智能的新风口
第五届世界互联网大会正在如火如荼的举行。
搜狗翻宝Pro机再次开挂,智能翻译硬件成中国人工智能的新风口
|
机器学习/深度学习 人工智能 自然语言处理
与世界同行 2017中国人工智能大会有感
与世界同行 2017中国人工智能大会有感
1545 0
与世界同行 2017中国人工智能大会有感
|
人工智能 自动驾驶
2019年上半年收集到的中国人工智能发展详情文章
2019年上半年收集到的中国人工智能发展详情文章
|
人工智能 芯片
中国人工智能计划,我来说几句
中国人工智能计划,我来说几句
|
机器学习/深度学习 人工智能 自然语言处理
2022 年中国人工智能行业发展现状与市场规模分析 市场规模超 3000 亿元
人工智能产业是智能产业发展的核心,是其他智能科技产品发展的基础,近年来,中国人工智能产业在政策与技术双重驱动下呈现高速增长态势。
1573 0
2022 年中国人工智能行业发展现状与市场规模分析 市场规模超 3000 亿元