我很困惑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的不匹配。