在通过平均每个样本的精度来评估多标签模型的精度时,是否适合 a) 忽略那些没有进行预测的样本?或者是否更适合 b) 将此类样本的精度视为 0。
例如:
地面实况:[[1, 1, 0], [1, 0, 0], [0, 1, 1]]
预言:[[1, 1, 0], [0, 0, 0], [0, 0, 1]]
通过平均每个样本的精度:
一)(1 + 0.5) / 2?或者
b) (1 + 0 + 0.5) / 3?
在通过平均每个样本的精度来评估多标签模型的精度时,是否适合 a) 忽略那些没有进行预测的样本?或者是否更适合 b) 将此类样本的精度视为 0。
例如:
地面实况:[[1, 1, 0], [1, 0, 0], [0, 1, 1]]
预言:[[1, 1, 0], [0, 0, 0], [0, 0, 1]]
通过平均每个样本的精度:
一)(1 + 0.5) / 2?或者
b) (1 + 0 + 0.5) / 3?
精度和召回率是针对单个二元分类问题定义的,它们不能直接用于多类或多标签分类。但是,可以使用微平均或宏观平均精度(或召回率),这是评估多个类别的标准方法。
显然你正在使用宏观平均,你的例子应该这样解释:
class 1 class 2 class 3
Ground-Truth: [[1, 1, 0], [1, 0, 0], [0, 1, 1]]
Prediction: [[1, 1, 0], [0, 0, 0], [0, 0, 1]]
计算精度为 1 级。
如果是这样,您对第 3 类有误,精度也是 1,而不是 0.5。
回答您的问题:在第 2 类的情况下,精度不为零,它是未定义的 (NaN),因为没有实例预测为正。严格来说,宏观平均值也是未定义的,因为一个值为 NaN。但是如果你必须计算宏观平均值,那么在选项 (a) 中丢弃类 2 比在选项 (b) 中将其精度计为零更有意义,这是不正确的。