【深度学习】直观理解AUROC

前言

AUROC常用于衡量二分类分类器的性能,本文旨在详解该指标计算过程

如何计算

设想我们有一个分类器,对数据做二分类。我们设输入数据为 x x x, 预测标签为 y y y, ground-truth标签为 y ^ \hat{y} y^。对每个 x x x,我们都预测 p ( y = 1 ∣ x ) p(y=1|x) p(y=1∣x),即将样本分类成正类的概率。
现在有一组带标注数据,其中一部分数据的真实标签 y ^ \hat{y} y^是0,另一部分的真实标签 y ^ \hat{y} y^是1 ,我们通过分类器预测 x x x属于正例的概率 p ( y = 1 ∣ x ) p(y=1|x) p(y=1∣x),对每个预测结果 y y y与真实标签 y ^ \hat{y} y^的匹配情况可分为四类
在这里插入图片描述
现在计算AUCROC,步骤如下

  • 确定一个概率阈值 λ \lambda λ , 当预测属于正例的概率大于 λ \lambda λ, 我们则将该样本分为正例
  • 在该阈值下,我们得到两个值
    • TPR (真阳性率) / 召回:所有真实标签为正的样本中,被预测为正例的数据所占的比例
      • T P F N + T P \frac{TP}{FN+TP} FN+TPTP
    • FPR (假阳率):所有真实标签为负的样本中,被预测为正例的数据所占的比例
      • F P T N + F P \frac{FP}{TN+FP} TN+FPFP
  • 以FPR为横轴,TPR为纵轴,我们绘制坐标轴,在坐标轴上画点
  • 取多种不同阈值可以得到多个点,将这些点连成线,所围成的面积就是AUROC
    在这里插入图片描述

直观解释

对于好的分类器,我们希望,对真实标签为正的样本,我们预测 p ( y = 1 ∣ x ) p(y=1|x) p(y=1∣x)能够比较大,对真实标签为负的样本,该值比较小。这里通过一个具体的例子对AUROC进行说明。
场景:我们数据的真实标签一半为0,一半为1,现在我们按预测的 p ( y = 1 ∣ x ) p(y=1|x) p(y=1∣x)对数据从小到大排序,左边一半就是 y ^ = 0 \hat{y}=0 y^=0的数据,右边一半是 y ^ = 1 \hat{y}=1 y^=1的数据。

  • 我们取一个很小的阈值,将所有样本都分类为正例, 此时,横纵坐标都为1,绘制点(1, 1)
    在这里插入图片描述

  • 我们取大一点的阈值,此时横坐标减小为 x 2 x_2 x2,纵坐标仍为1, 绘制点( x 2 x_2 x2, 1)
    在这里插入图片描述

  • 再大一点,此时横坐标为0,纵坐标仍为1,绘制点(0,1)
    在这里插入图片描述

  • 再大一点,横坐标为0,纵坐标变小为 y 2 y_2 y2,绘制点(0, y 2 y_2 y2)
    在这里插入图片描述

  • 最后,横坐标纵坐标都为0,绘制点(0,0)
    在这里插入图片描述

我们绘制的AUCROC曲线为红色部分,与坐标轴围成的面积为1。
在这里插入图片描述

可以看到,AUROC期望任意一个正样本被分类为正的概率大于任意一个负样本被分类为正的概率

  • ACROC最大值为1,越大说明分类效果越好
  • 不考虑正样本之间的概率相对大小以及负样本内部的概率大小
  • 不考虑实际的概率值大小
  • 实际使用中,我们往往取多个(100)阈值,或将样本中的每个概率都作为一次阈值来绘制曲线,以对分类效果进行细粒度评估

常用计算方式

from sklearn.metrics import roc_auc_score

# 假设你有以下真实标签和预测概率
y_true = [0, 0, 1, 1]  # 真实标签
y_scores = [0.1, 0.4, 0.35, 0.8]  # 预测概率

# 计算AUROC
auc = roc_auc_score(y_true, y_scores)
print(f"AUROC: {auc}")

图像参考:https://www.zhihu.com/question/428614381/answer/3423485003

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长命百岁️

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值