ROC-AUC 浅谈理解ROC曲线和AUC值

ROC曲线展示了二分类器的TPR与FPR之间的权衡,AUC值是ROC曲线下的面积,用于评估分类器性能。理解ROC-AUC需要熟悉F1、Recall和Precision。ROC曲线随着阈值变化,TPR和FPR升降,AUC值大表示分类器性能更好。AUC不受数据不平衡影响,只与预测交叉部分相关。

这是一个评价二分类器的指标,特点是不受不平衡数据集的影响。但事实理解起来有点难。下面先介绍ROC-AOC是什么,然后再谈谈我的一种理解。ps,理解这个指标,首先得对经典的F1, Recall,Precision的比较熟悉,否则看了会一头雾水,如果你不熟这几个指标的计算,建议先阅读

1. ROC曲线

receiver operating characteristic curve(名称似乎无法直观理解它本身,所以忽略),它是一条关于TPR和FPR的曲线,其中TPR,true positive rate,标签为正的样本,被预测为正的比率。FPR,false positive rate,标签为负,预测为正的比率。

正确预测为正的 / 全体标签为正的数量。

### ROC - AUC #### 概念 ROC(Receiver operating characteristic)是一个二维平面空间中一条曲线,全称为受试者特征曲线AUC(Area Under Curve)被定义为ROC曲线下的面积,是一个具体的ROC曲线一般处于y = x这条直线的上方,所以AUC的取范围在0.51之间。AUC反映的是分类器对于样本的排序能力,AUC越大,模型的分类效果越好 [^1][^2][^3]。 #### 计算方法 ROC曲线是以fpr(false positive rate)为x轴,tpr(true positive rate)为y轴,取不同的score threshold画出来的。tpr(true positive rate)即sensitivity(recall),计算公式为: $$ \begin{aligned} sensitivity&=recall=true\ positive\ rate\\ &=\frac{tp}{tp + fn}\\ &=P(\hat{y}=1|y = 1) \end{aligned} $$ fpr(false positive rate) = 1 - specifity,specifity计算公式为: $$ \begin{aligned} specifity&=1 - false\ positive\ rate\\ &=\frac{tn}{fp + tn}\\ &=P(\hat{y}=0|y = 0) \end{aligned} $$ AUC就是从所有正例样本中随机选择出一个样本,在所有负例样本中随机选择出一个样本,使用分类器进行预测。将正例样本预测为正的概率记作$P_1$,将负例样本预测为负的概率记作$P_0$,$P_1 > P_0$的概率就等于AUC [^3]。 #### 应用 使用AUC作为评价标准是因为很多时候ROC曲线并不能清晰地说明哪个分类器的效果更好,而作为一个数,对应AUC更大的分类器效果更好。通常使用AUC的目的,一是为了比较不同模型性能的好坏,二是为了找到得到最佳指标的那个阈点。此外,AUC对于样本类别是否均衡并不敏感,这也是不均衡样本通常使用AUC评价分类器性能的一个原因 [^1][^3]。 ### AP(Average Precision) #### 概念 在提供的引用中未提及AP的相关内容。AP(Average Precision)是信息检索领域中常用的一个指标,用于衡量检索系统的性能。在目标检测图像分类等机器学习任务中也有应用。它是对不同召回率下的精确率求平均,反映了模型在不同召回水平下的平均精确程度。 #### 计算方法 AP的计算通常是在不同的召回率阈下计算精确率,然后对这些精确率进行平均。具体步骤如下: 1. 按照模型预测的置信度对所有预测结果进行排序。 2. 从高到低依次选取预测结果,计算不同召回率下的精确率。 3. 对这些精确率进行平均,得到AP。 #### 应用 AP常用于评估目标检测模型图像分类模型的性能。在目标检测任务中,每个类别都会计算一个AP,然后可以通过计算所有类别的平均AP(mAP,mean Average Precision)来综合评估模型的性能。 ### 代码示例(Python计算ROC - AUC) ```python from sklearn.metrics import roc_auc_score import numpy as np # 示例真实标签预测概率 y_true = np.array([0, 0, 1, 1]) y_scores = np.array([0.1, 0.4, 0.35, 0.8]) # 计算ROC - AUC auc = roc_auc_score(y_true, y_scores) print(f"ROC - AUC: {auc}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值