如何解决Keras 的 AUC(curve='PR') 和 Scikit-learn 的 average_precision_score 有什么区别?
我对 Keras 的 AUC(curve='PR')
和 Scikit-learn 的 average_precision_score
之间的区别感到很困惑。我的目标是计算 Scikit-learn 和 Keras 模型的 Precision-Recall Curve (AUPRC) 下的面积。然而,这两个指标产生了截然不同的结果!
我是否遗漏了 https://www.tensorflow.org/api_docs/python/tf/keras/metrics/AUC 的 TensorFlow-Keras 文档中有关 AUC
函数使用的内容?
解决方法
如 Scikit-learn documentation 中所述,它们使用不同的实现方法:
参考文献 [Manning2008] 和 [Everingham2010] 介绍了插入精确召回曲线的 AP 的替代变体。目前,average_precision_score 没有实现任何插值变量。参考文献 [Davis2006] 和 [Flach2015] 描述了为什么精确召回曲线上的点的线性插值提供了一种过于乐观的分类器性能度量。这种线性插值是在用 auc 中的梯形规则计算曲线下面积时使用的。
在average_precision_score
函数documentation中,还可以阅读:
这个实现不是内插的,是不同的 计算精度-召回曲线下的面积 梯形规则,它使用线性插值,也可以 乐观。
我鼓励您详细查看 metrics module 中可用的不同功能及其说明。我还强烈建议您阅读related paper。
最后,这里还有一个可能感兴趣的话题:[AUC] result of tf.metrics.auc doesnot match with sklearn's。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。