首页 > 解决方案 > 如何理解张量板中的 auc_precision_recall 曲线?

问题描述

版本:

TensorFlow: 1.6.0
TensorBoard: 1.6.0

我在做什么和熟悉:

  1. 使用 Pre-made Estimator tf.estimator.DNNClassifier训练具有largely skewed dataset(即不平衡数据集)的二元分类模型。
  2. 所以,我必须使用Precision-Recall曲线来选择最佳模型而不是AUC曲线。
  3. 我什么都没改变tf.estimator.DNNClassifier(当然,我确实改变了这三个参数:hidden_units, feature_columns, model_dir)。
  4. 在模型的准确率达到阈值并停止优化后,我必须像这样继续训练:从所有特征中迭代地挑选一个特征并进行训练,这样我就可以尽可能地去除一些噪声特征。
  5. 我这样做了Step 4,每次我选择一个特征时,我都会得到一个新的训练结果和一张auc_precision_recall来自 TensorBoard 的关于曲线的新图片。即,当我挑选出FEATURE_A我得到figure A时,挑选出FEATURE_B我得到了figure B,然后挑选出FEATURE_C我得到了figure C
    图片如下:
    图A图B图C
  6. 上述auc_precision_recall曲线图说明:
    • x轴:表示训练步骤。
    • y轴:范围从 0 到 1(这是我想知道的:是什么y意思?)。
  7. 以下是该站点的标准Precision-Recall曲线。(我将其粘贴在这里只是为了方便我们讨论我的问题)。标准 Precision-Recall 曲线
  8. 上述标准Precision-Recall曲线说明:
    • x轴:召回,范围从 0 到 1。
    • y轴:精度,范围从 0 到 1。

我的问题:

  1. yTensorBoardauc_precision_recall曲线中轴中的值是什么意思?
  2. auc_precision_recallTensorBoard曲线和标准曲线之间有什么关系Precision-Recall
  3. 为什么yTensorBoardauc_precision_recall曲线中轴的值如此奇怪?
    • figure A,第一点是(x, y) = (1, 0.5009),为什么y0.5009连中1st Step?还有为什么大多数其他值也保持在 0.5(figure A我们可以很容易地读到这个)?
    • 同样在 中figure B,第一点是(x, y) = (7, 0.4625),为什么y即使在前几个训练步骤中,这个 (0.4625) 值也不等于接近 0 的值,如图figure C所示?

标签: tensorflowmachine-learningtensorboardprecision-recallauc

解决方案


我得到了答案:这是 tensorflow 版本 1.6.0 中的一个错误,由计算 的值的错误方式(梯形AUC_PR)引起,并且此错误已在最新版本 1.8.0 中通过此提交修复。因此,如果您正在训练一个严重倾斜的数据集,请记住将 tensorflow 更新到最新版本 1.8.0。


推荐阅读