如何理解张量板中的 auc_precision_recall 曲线?
How to understand auc_precision_recall curve in tensorboard?
版本:
TensorFlow: 1.6.0
TensorBoard: 1.6.0
我在做什么和熟悉:
- 使用预制的
Estimator
tf.estimator.DNNClassifier 训练具有 largely skewed dataset
(即不平衡数据集)的二元分类模型。
- 所以,我必须使用
Precision-Recall
曲线而不是 AUC
曲线来选择最佳模型。
- 我没改
tf.estimator.DNNClassifier
(当然,我确实改了这三个参数:hidden_units
、feature_columns
、model_dir
)。
- 模型准确率达到阈值后停止优化,我不得不继续这样训练:从所有特征中迭代地挑选一个特征进行训练,这样我就可以去除一些噪声特征作为可能。
- 我做了
Step 4
,每次我从 TensorBoard 中挑选出一个特征时,我都会得到一个新的训练结果和一张关于 auc_precision_recall
曲线的新图片。
即,当我选择 FEATURE_A
我得到 figure A
,选择 FEATURE_B
我得到 figure B
,然后选择 FEATURE_C
我得到 figure C
。
图片如下:
figure A, figure B, figure C
- 以上
auc_precision_recall
曲线图说明:
x
axes: 表示训练步骤。
y
轴:范围从 0 到 1(这就是我想知道的:y
是什么意思?)。
- 以下是来自此 site 的标准
Precision-Recall
曲线。(我将其粘贴在这里只是为了方便我们讨论我的问题)。
standard Precision-Recall curve
- 关于上述标准
Precision-Recall
曲线的说明:
x
axes: Recall, range from 0 to 1.
y
axes: Precision, range from 0 to 1.
我的问题:
- TensorBoard
auc_precision_recall
曲线中 y
轴中的值是什么意思?
- TensorBoard
auc_precision_recall
曲线和标准 Precision-Recall
曲线有什么关系?
- 为什么 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)值即使在前几个训练步骤中也不等于接近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 曲线上可实现的最小和最大区域。
版本:
TensorFlow: 1.6.0
TensorBoard: 1.6.0
我在做什么和熟悉:
- 使用预制的
Estimator
tf.estimator.DNNClassifier 训练具有largely skewed dataset
(即不平衡数据集)的二元分类模型。 - 所以,我必须使用
Precision-Recall
曲线而不是AUC
曲线来选择最佳模型。 - 我没改
tf.estimator.DNNClassifier
(当然,我确实改了这三个参数:hidden_units
、feature_columns
、model_dir
)。 - 模型准确率达到阈值后停止优化,我不得不继续这样训练:从所有特征中迭代地挑选一个特征进行训练,这样我就可以去除一些噪声特征作为可能。
- 我做了
Step 4
,每次我从 TensorBoard 中挑选出一个特征时,我都会得到一个新的训练结果和一张关于auc_precision_recall
曲线的新图片。 即,当我选择FEATURE_A
我得到figure A
,选择FEATURE_B
我得到figure B
,然后选择FEATURE_C
我得到figure C
。
图片如下:
figure A, figure B, figure C - 以上
auc_precision_recall
曲线图说明:x
axes: 表示训练步骤。y
轴:范围从 0 到 1(这就是我想知道的:y
是什么意思?)。
- 以下是来自此 site 的标准
Precision-Recall
曲线。(我将其粘贴在这里只是为了方便我们讨论我的问题)。
standard Precision-Recall curve - 关于上述标准
Precision-Recall
曲线的说明:x
axes: Recall, range from 0 to 1.y
axes: Precision, range from 0 to 1.
我的问题:
- TensorBoard
auc_precision_recall
曲线中y
轴中的值是什么意思? - TensorBoard
auc_precision_recall
曲线和标准Precision-Recall
曲线有什么关系? - 为什么 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)值即使在前几个训练步骤中也不等于接近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 曲线上可实现的最小和最大区域。