如何理解张量板中的 auc_precision_recall 曲线?

How to understand auc_precision_recall curve in tensorboard?

版本:

TensorFlow: 1.6.0
TensorBoard: 1.6.0

我在做什么和熟悉:

  1. 使用预制的 Estimator tf.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曲线图说明:
    • x axes: 表示训练步骤。
    • y 轴:范围从 0 到 1(这就是我想知道的:y 是什么意思?)。
  7. 以下是来自此 site 的标准 Precision-Recall 曲线。(我将其粘贴在这里只是为了方便我们讨论我的问题)。
    standard Precision-Recall curve
  8. 关于上述标准Precision-Recall曲线的说明:
    • x axes: Recall, range from 0 to 1.
    • y axes: Precision, range from 0 to 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),为什么y1st Step中也是0.5009?以及为什么大多数其他值也保持在 0.5(从 figure A 我们可以很容易地读到这一点)?
    • 同样在figure B中,第一个点是(x, y) = (7, 0.4625),为什么这个y(0.4625)值即使在前几个训练步骤中也不等于接近0的值如 figure C 所示?

我得到答案了:这是tensorflow 1.6.0版本的一个bug,由错误的方式(梯形)计算[=10=的值造成的],此错误已在最新版本 1.8.0 中由 this commit 修复。所以如果你正在训练一个严重倾斜的数据集,记得更新tensorflow到最新版本1.8.0.

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