【问题标题】:How to understand auc_precision_recall curve in tensorboard?如何理解张量板中的 auc_precision_recall 曲线?
【发布时间】:2018-10-05 13:06:29
【问题描述】:

版本:

TensorFlow: 1.6.0
TensorBoard: 1.6.0

我在做什么和熟悉的:

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

我的问题:

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

【问题讨论】:

    标签: tensorflow machine-learning tensorboard precision-recall auc


    【解决方案1】:

    我已经找到答案了:这是tensorflow 1.6.0版本中的一个bug,是由于计算AUC_PR的值的方式错误(trapezoidal)导致的,这个bug已经修复this commit 在最新版本 1.8.0 中。因此,如果您正在训练一个严重倾斜的数据集,请记住将 tensorflow 更新到最新版本 1.8.0。

    【讨论】:

      【解决方案2】:

      回答问题 1 和 2。AUC 表示曲线下面积。因此,您正在查看精确召回 (PR) 曲线下的面积。 y 轴给出了这个区域,它介于 0 和 1 之间,因为这些是 PR 曲线上可实现的最小和最大区域。

      【讨论】:

        猜你喜欢
        • 2022-11-01
        • 2016-07-25
        • 2018-10-02
        • 1970-01-01
        • 2021-02-15
        • 1970-01-01
        • 2018-06-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多