多标签分类 Keras 指标

Multi-label classification Keras metrics

Keras 中的多标签分类哪个指标更好:accuracy 还是 categorical_accuracy?显然最后一个激活函数是 sigmoid 并且在这种情况下损失函数是 binary_crossentropy

实际上,Keras 中没有名为 accuracy 的指标。当您在 Keras 中设置 metrics=['accuray'] 时,将根据使用的损失函数自动推断出正确的精度指标。因此,由于您已使用 binary_crossentropy 作为损失函数,因此 binary_accuracy 将被选为指标。

现在,在多标签 classification 任务中,您绝对应该选择 binary_accuracy 而不是 categorical_accuracy,因为 classes 彼此独立并且预测每个 class 应该独立于其他 classes.

的预测来考虑

我不会将准确性用于不平衡 类 的分类任务。 特别是对于多标签任务,您可能将大部分标签设置为 False。也就是说,与所有可能标签的基数相比,每个数据点只能有一小部分标签。 出于这个原因,准确性不是一个好的指标,如果您的模型预测所有错误(sigmoid 激活输出 < 0.5),那么您将测量到非常高的准确性。

我会在每个时期分析 AUC 或 recall/precision。 或者,可以将多标签任务视为排名任务(如推荐系统),您可以评估 precision@k 或 recall@k,其中 k 是预测最高的标签。

如果您的 Keras 后端是 TensorFlow,请在此处查看支持指标的完整列表:https://www.tensorflow.org/api_docs/python/tf/keras/metrics