首页 > 解决方案 > Keras 的 AUC(curve='PR') 和 Scikit-learn 的 average_precision_score 有什么区别?

问题描述

AUC(curve='PR')我对Keras 和 Scikit-learn之间的区别感到很困惑average_precision_score。我的目标是计算 Scikit-learn 和 Keras 模型的精确召回曲线下面积 (AUPRC)。然而,这两个指标产生了截然不同的结果!

关于函数的使用,我是否错过了https://www.tensorflow.org/api_docs/python/tf/keras/metrics/AUCAUC上的 TensorFlow-Keras 文档中的某些内容?

标签: tensorflowkerasscikit-learnaucprecision-recall

解决方案


如 Scikit-learn文档中所述,它们使用不同的实现方法:

参考文献 [Manning2008] 和 [Everingham2010] 介绍了插入精确召回曲线的 AP 的替代变体。目前,average_precision_score 没有实现任何插值变量。参考文献 [Davis2006] 和 [Flach2015] 描述了为什么精确召回曲线上的点的线性插值提供了对分类器性能的过于乐观的度量。当使用 auc 中的梯形规则计算曲线下面积时,使用此线性插值。

average_precision_score函数文档中,您还可以阅读:

这种实现没有插值,与使用梯形规则计算精确召回曲线下的面积不同,梯形规则使用线性插值,可能过于乐观。

我鼓励您详细查看度量模块中可用的不同功能及其描述。我也强烈建议阅读相关论文

最后,这里还有一个可能感兴趣的线程:[AUC] result of tf.metrics.auc does not match with sklearn's


推荐阅读