【发布时间】:2020-02-26 01:10:12
【问题描述】:
我有一个多类分类问题,我想测量训练和测试数据的 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 指标计算错误。
有人可以确认我这个指标是否支持多类分类问题?
【问题讨论】:
-
我认为 ROC-AUC 不是评估您的 ML 问题的正确指标。它仅针对二元问题定义。但是,有一些考虑将它用于多类问题:stats.stackexchange.com/questions/2151/…。通常你使用
tf.math.top_k之类的东西,并评估你的网络在前 k 个预测中的次数(对于很多类,通常 k=1 和 k=5)。
标签: python python-3.x tensorflow2.0 tf.keras auc