首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >评估评等系统所用的指标

评估评等系统所用的指标
EN

Data Science用户
提问于 2021-01-25 13:07:29
回答 1查看 126关注 0票数 1

我有一个系统,给出工作质量的星级评分( 1-5,1是极差,5是特别好)。一位专家用他们对工作质量的评价给一套测试贴上标签。

5类(1、2、3、4、5)的数据不平衡,极差和特别好评级的样本很少。是否有一个指标可以考虑到,如果系统将质量极差的工作评为非常好或特别好,则应给予更多的惩罚,而不是将极差的评级评为差或差或平均?再一次,由于不平衡的类别分布,直截了当的准确性并不是最好的衡量标准。

对公制有什么建议吗?

EN

回答 1

Data Science用户

发布于 2021-01-25 14:25:51

多类问题的性能度量

对于分类问题,分类器的性能通常根据与分类器相关联的混淆矩阵来定义。基于矩阵的条目,可以计算灵敏度(回忆)、特异性和精度。对于一个单一的截止,这些数量导致平衡的准确性(敏感性和特异性)或F1评分(召回和精确)。为了评估评分分类器在多个袖口,这些数量可以用来确定面积下的中华民国曲线(AUC)或面积下的精确-回忆曲线(AUCPR)。

所有这些性能指标对于二进制分类问题都是很容易得到的。哪种方法是合适的取决于分类器的类型。

F-度量/F1-不平衡分类

的评分

分类精度是一种用于总结模型性能的单一指标,因此得到了广泛的应用。measure提供了一种将精确性和回忆性结合在一起的方法,它可以将两个属性都包含在一个度量中。无论是精确性,还是回忆性,都不足以说明整个故事。我们可以用糟糕的回忆来获得极好的精确度,也可以用极佳的回忆来交替地拥有极差的精确度。F-度量提供了一种用一个分数来表达两种关切的方法。一旦计算了一个二元或多类分类问题的精确性和召回率,就可以将这两个分数合并到F-测度的计算中。传统的F测度计算如下:

\begin{equation} \nonumber F-Measure=\frac{2 * Precision * Recall}{Precision + Recall} \end{equation}

对于多类分类问题,我们不计算总的F1分数.相反,我们以一比一的方式计算每堂课的F1分.

下面是一些简单的Python函数,这些函数就是这样做的:

代码语言:javascript
复制
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分数独立计算的,但是当它将它们相加时,使用的权重取决于每个类的真正标签的数量:

F1_{class1}*W_1+F1_{class2}*W_2+\cdot\cdot\cdot+F1_{classN}*W_N

所以偏袒多数阶级。

F1评分

的微观和宏观平均值

微观和宏观平均值代表了在多类设置中解释混淆矩阵的两种方法。在这里,我们需要计算每个类g_i \in G = \{1, \ldots, K\}的混淆矩阵,使得i-th混淆矩阵将类g_i视为正类,而其他所有类都为g_j,而j≠i为负类。由于每个混淆矩阵都将所有用g_i以外的类标记为负类的观察集合起来,因此这种方法会导致真实否定的数量增加,特别是在有许多类的情况下。

为了举例说明为什么真正否定的增加是有问题的,假设有10个类别,每类10个观察。然后,其中一个类的混淆矩阵可能具有以下结构:

代码语言:javascript
复制
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_iFP_iFN_i分别表示与i-th类关联的混淆矩阵中的真阳性、假阳性和假阴性。此外,让精度用P表示,用R表示召回。

微观海损之所以有其名称,是因为它汇集了尽可能最小的单元(即所有样本)的性能:

\begin{align*} P_{\rm{micro}} &= \frac{\sum_{i=1}^{|G|} TP_i}{\sum_{i=1}^{|G|} TP_i+FP_i} \\ R_{\rm{micro}} &= \frac{\sum_{i=1}^{|G|} TP_i}{\sum_{i=1}^{|G|} TP_i + FN_i} \end{align*}

微平均精度( P_{micro} )和召回率( R_{micro} )导致了F1的微分数:

F1_{\rm{micro}} = 2 \frac{P_{\rm{micro}} \cdot R_{\rm{micro}}}{P_{\rm{micro}} + R_{\rm{micro}}}

如果一个分类器获得一个大的F1_{micro},这表明它的整体性能很好。微观平均对单个类的预测性能不敏感.因此,当阶级分布不平衡时,微观平均可能会特别误导人.

宏平均之所以有其名称,是因为它平均于较大的组,即单个类的性能,而不是观察:

\begin{align*} P_{\rm{macro}} &= \frac{1}{|G|} \sum_{i=1}^{|G|} \frac{TP_i}{TP_i+FP_i} = \frac{\sum_{i=1}^{|G|} P_i}{|G|}\\ R_{\rm{macro}} &= \frac{1}{|G|} \sum_{i=1}^{|G|} \frac{TP_i}{TP_i + FN_i} = \frac{\sum_{i=1}^{|G|} R_i}{|G|} \end{align*}

宏平均精度和召回导致宏f1得分:

F1_{\rm{macro}} = 2 \frac{P_{\rm{macro}} \cdot R_{\rm{macro}}}{P_{\rm{macro}} + R_{\rm{macro}}}

如果F1_{macro}有一个很大的值,这表明分类器对于每个单独的类都有很好的性能。因此,宏平均值更适合于类分布不平衡的数据.

参考资料:

票数 2
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/88447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档