多标签分类 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。
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。