如何理解TensorBoard中的auc_precision_recall曲线?

版本信息:

TensorFlow: 1.6.0
TensorBoard: 1.6.0

我正在做的事情和熟悉的内容:

  1. 使用预制的Estimator tf.estimator.DNNClassifier 来训练一个二分类模型,该模型使用一个严重倾斜的数据集(即不平衡数据集)。
  2. 因此,我必须使用Precision-Recall曲线来选择最优模型,而不是AUC曲线。
  3. 我对tf.estimator.DNNClassifier没有做任何修改(当然,我确实更改了这三个参数:hidden_unitsfeature_columnsmodel_dir)。
  4. 当模型的准确率达到某个阈值并停止优化后,我需要继续进行训练:从所有特征中逐个选择一个特征进行训练,以便尽可能去除一些噪声特征。
  5. 我按照步骤4进行操作,每次选择一个特征后,我会得到一个新的训练结果和TensorBoard中关于auc_precision_recall曲线的新图表。即,当我选择FEATURE_A时,我得到了图A;选择FEATURE_B时,我得到了图B;选择FEATURE_C时,我得到了图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. 在TensorBoard的auc_precision_recall曲线中,y轴上的值代表什么意思?
  2. TensorBoard的auc_precision_recall曲线与标准的Precision-Recall曲线之间有什么关系?
  3. 为什么TensorBoard的auc_precision_recall曲线中y轴上的值如此奇怪?
    • 图A中,第一个点是(x, y) = (1, 0.5009),为什么在第一步y值是0.5009?而且为什么大多数其他值也保持在0.5左右(从图A中我们可以很容易地看出这一点)?
    • 同样在图B中,第一个点是(x, y) = (7, 0.4625),为什么这个y值(0.4625)在前几个训练步骤中不是接近0的值,就像图C显示的那样?

回答:

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

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注