Keras的AUC(curve='PR')和Scikit-learn的average_precision_score有什么区别?



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

TensorFlow Keras文档中有遗漏吗https://www.tensorflow.org/api_docs/python/tf/keras/metrics/AUC,关于AUC函数的使用?

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

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

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

此实现不是插值的,并且不同通过使用梯形规则,它使用线性插值,也可以乐观的

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

最后,这里还有一个潜在的感兴趣的线索:tf.metrics.AUC的[AUC]结果与sklearn的不匹配。

最新更新