我有一个多类分类问题,我想测量训练和测试数据的 AUC。
tf.keras 已经实现了 AUC 指标(tf.keras.metrics.AUC),但我无法看到这个指标是否可以安全地用于多类问题。甚至,官方网页上的示例“不平衡数据分类”专用于二进制分类问题。
我已经实现了一个预测六个类别的 CNN 模型,具有一个提供所有类别概率的 softmax 层。我使用这个指标如下
self.model.compile(loss='categorical_crossentropy',
optimizer=Adam(hp.get("learning_rate")),
metrics=['accuracy', AUC()]),
并且代码执行没有任何问题。但是,有时我会看到一些对我来说很奇怪的结果。例如,模型报告的准确度为 0.78333336,AUC 等于 0.97327775,这可能吗?模型可以有低准确率和这么高的 AUC 吗?我想知道,虽然代码没有给出任何错误,但 AUC 指标计算错误。
有人可能会向我确认此指标是否支持多类分类问题?
最佳答案
有争论 multi_label
这是您的 tf.keras.metrics.AUC
中的 bool 值称呼。
如 True
(不是默认值),多标签数据将被如此处理,因此为每个标签单独计算 AUC,然后跨标签取平均值。
当False
(默认),在 AUC 计算之前,数据将被展平为单个标签。在后一种情况下,当多标签数据传递给 AUC 时,每个标签-预测对都被视为一个单独的数据点。
文档建议将其设置为 False
用于多类数据。
例如:tf.keras.metrics.AUC(multi_label = True)
见 AUC Documentation更多细节。
关于python - tf.keras.metrics.AUC 是否适用于多类问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58630393/