我有一个系统,给出工作质量的星级评分( 1-5,1是极差,5是特别好)。一位专家用他们对工作质量的评价给一套测试贴上标签。
5类(1、2、3、4、5)的数据不平衡,极差和特别好评级的样本很少。是否有一个指标可以考虑到,如果系统将质量极差的工作评为非常好或特别好,则应给予更多的惩罚,而不是将极差的评级评为差或差或平均?再一次,由于不平衡的类别分布,直截了当的准确性并不是最好的衡量标准。
对公制有什么建议吗?
发布于 2021-01-25 14:25:51
对于分类问题,分类器的性能通常根据与分类器相关联的混淆矩阵来定义。基于矩阵的条目,可以计算灵敏度(回忆)、特异性和精度。对于一个单一的截止,这些数量导致平衡的准确性(敏感性和特异性)或F1评分(召回和精确)。为了评估评分分类器在多个袖口,这些数量可以用来确定面积下的中华民国曲线(AUC)或面积下的精确-回忆曲线(AUCPR)。
所有这些性能指标对于二进制分类问题都是很容易得到的。哪种方法是合适的取决于分类器的类型。
的评分
分类精度是一种用于总结模型性能的单一指标,因此得到了广泛的应用。measure提供了一种将精确性和回忆性结合在一起的方法,它可以将两个属性都包含在一个度量中。无论是精确性,还是回忆性,都不足以说明整个故事。我们可以用糟糕的回忆来获得极好的精确度,也可以用极佳的回忆来交替地拥有极差的精确度。F-度量提供了一种用一个分数来表达两种关切的方法。一旦计算了一个二元或多类分类问题的精确性和召回率,就可以将这两个分数合并到F-测度的计算中。传统的F测度计算如下:
对于多类分类问题,我们不计算总的F1分数.相反,我们以一比一的方式计算每堂课的F1分.
下面是一些简单的Python函数,这些函数就是这样做的:
def precision(y_true, y_pred):
i = set(y_true).intersection(y_pred)
len1 = len(y_pred)
if len1 == 0:
return 0
else:
return len(i) / len1
def recall(y_true, y_pred):
i = set(y_true).intersection(y_pred)
return len(i) / len(y_true)
def f1(y_true, y_pred):
p = precision(y_true, y_pred)
r = recall(y_true, y_pred)
if p + r == 0:
return 0
else:
return 2 * (p * r) / (p + r)对于不平衡的班级,我建议采用加权f1分数或平均AUC /加权AUC或f1分数的微观和宏观平均值。
加权F1 -分数是由每个类的F1分数独立计算的,但是当它将它们相加时,使用的权重取决于每个类的真正标签的数量:
所以偏袒多数阶级。
的微观和宏观平均值
微观和宏观平均值代表了在多类设置中解释混淆矩阵的两种方法。在这里,我们需要计算每个类g_i \in G = \{1, \ldots, K\}的混淆矩阵,使得i-th混淆矩阵将类g_i视为正类,而其他所有类都为g_j,而j≠i为负类。由于每个混淆矩阵都将所有用g_i以外的类标记为负类的观察集合起来,因此这种方法会导致真实否定的数量增加,特别是在有许多类的情况下。
为了举例说明为什么真正否定的增加是有问题的,假设有10个类别,每类10个观察。然后,其中一个类的混淆矩阵可能具有以下结构:
Prediction/Reference Class 1 Other Class
Class 1 8 10
Other Class 2 80根据该矩阵,其特异性为\frac{80}{80 + 10} = 88.9\%,但18例中只有8例( 44.4%)正确预测了1类。因此,由于负类占主导地位,所以专一性膨胀。因此,微观和宏观平均只为F1评分,而不是为平衡的准确性,这取决于真正的负率。
在下面,我们将使用TP_i、FP_i和FN_i分别表示与i-th类关联的混淆矩阵中的真阳性、假阳性和假阴性。此外,让精度用P表示,用R表示召回。
微观海损之所以有其名称,是因为它汇集了尽可能最小的单元(即所有样本)的性能:
微平均精度( P_{micro} )和召回率( R_{micro} )导致了F1的微分数:
如果一个分类器获得一个大的F1_{micro},这表明它的整体性能很好。微观平均对单个类的预测性能不敏感.因此,当阶级分布不平衡时,微观平均可能会特别误导人.
宏平均之所以有其名称,是因为它平均于较大的组,即单个类的性能,而不是观察:
宏平均精度和召回导致宏f1得分:
如果F1_{macro}有一个很大的值,这表明分类器对于每个单独的类都有很好的性能。因此,宏平均值更适合于类分布不平衡的数据.
https://datascience.stackexchange.com/questions/88447
复制相似问题