如何理解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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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