手动计算AUC

7

如何通过fpr和tpr计算AUC值?Fpr和tpr只是通过以下公式得到的两个浮点数:

my_fpr = fp / (fp + tn)
my_tpr = tp / (tp + fn)
my_roc_auc = auc(my_fpr, my_tpr)

我知道这不可能,因为fpr和tpr只是一些浮点数,它们需要是数组,但我想不出如何做到这一点。我也知道可以用以下方法计算AUC:

y_predict_proba = model.predict_proba(X_test)
probabilities = np.array(y_predict_proba)[:, 1]
fpr, tpr, _ = roc_curve(y_test, probabilities)
roc_auc = auc(fpr, tpr)

但出于某些原因,我希望避免使用predict_proba。那么我的问题是:我如何获得具有fp,tp,fn,tn,fpr,tpr的AUC?换句话说,是否可以在没有roc_curve的情况下获得AUC?


你确定 fpr 和 tpr 只是浮点数,而不是 numpy 数组吗? - Calimo
是的,它们是2个浮点数值。 - user9370613
那么你就无法计算ROC曲线。你需要获取所有阈值下的值,例如roc_curve(y_test, probabilities)返回的值(无论是numpy数组、pandas Series还是列表都可以)。 - Calimo
2个回答

15

是的,可以不调用roc_curve功能来获得AUC。

首先需要创建ROC(接收器操作特性)曲线。为了能够使用ROC曲线,您的分类器应该能够对示例进行排名,以便更高排名的示例更可能是阳性的(例如欺诈)。例如,逻辑回归输出概率,这是您可以用于排名的分数。 ROC曲线通过在不同的阈值设置下绘制真正例率(TPR)与假正例率(FPR)来创建。例如:

输入图像描述

模型表现是通过查看ROC曲线下面积(或AUC)来确定的。

输入图像描述

您可以在这里找到更详细的解释。


2
您可以将空间分为两部分:三角形和梯形。三角形的面积为TPR*FRP/2,梯形的面积为(1-FPR)*(1+TPR)/2 = 1/2 - FPR/2 + TPR/2 - TPR*FPR/2。总面积为1/2 - FPR/2 + TPR/2。这就是您只需拥有2个点即可得到它的方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接