评估指标

NLP

在每不同的机器学习任务中,我们可以选择不同的评估指标。

情感分析(sentiment analysis)是自然语言处理(NLP)领域中的一个核心任务。其希望通过一些处理将一段话(或者一句话)根据情感属性进行分类。思考一个场景,你正在运营一个餐厅并希望训练一个模型,分析用户的评价到底是好的还是坏的。在经过一些数据采集后,你获得了一个 10,0000 条评论组成的数据集。你对其进行了数据标注发现其中 9,9000 条为正向的评价而有100条为负面的。

你选择了一个模型并进行了训练。由于数据集本身的不平衡,你的模型只学会了返回正结果。而如果从朴素的概率思考

你获得了一个非常非常高得正确率,但是这个模型毫无意义,因为它根本挑不出负面的评价!

情况分析

事实
模型预测 真阳性伪阳性精确率
伪阴性真阴性
召回率准确率
Ground Truth
True False
Prediction TrueTrue PositiveFalse Positive Preicision
FalseFalse NegativeTrue Negative
RecallAccuracy

如果我们把情况分类会发现有4种情况:

  • 真阳性:事实和模型预测的结果都为真
  • 真阴性:事实和模型预测的结果都为假
  • 伪阳性:事实是阴性,但是模型预测为真,即模型预测的真其实是错误的
  • 伪阴性:事实是阳性,但是模型预测为假,即模型预测的假其实是错误的

我们最朴素的认知的名字叫准确率(Accuracy),其是所有正确的数量与所有数据的数量的比值,即: 缩写即: 于此同时我们还定义了 其它两个指标精确率(Precision)召回率(Recall)

为平衡精确性和召回率,我们创造了 score

而其中最有名的参数为 F1 指标,其是对精确率和召回率的特定比例,即: 不同指标通常会适用于不同场景。就拿之前的场景,其精确率为 而其召回率为

对于伪阴性特别敏感的任务,例如医疗中的漏诊(宁可错杀也不放过),我们通常选择召回率作为指标。
而对于伪阳性敏感的任务,例如垃圾邮件过滤(我们不希望有任何一封普通邮件被判定为垃圾邮件,因此如果不确定则会倾向于分类为普通邮件),我们通常使用精确性作为指标。

混淆矩阵 Confusion Matrix

混淆矩阵 Confusion Matrix 是一个 的矩阵,其列代表模型的预测结果,其和我们上文定义的表格很类似:

或者写成:

宏观平均和微观平均

宏观平均(Macro-average)和微观平均(Micro-average)是两种不同的平均方式。

宏观平均指我们会对每个数据集的指标进行计算,然后求平均值。而如果使用微观平均,我们会将所有数据集的混淆矩阵相加,然后使用最终的混淆矩阵计算指标。

考虑如果我们有 3 个不同的数据集,其混淆矩阵分别为:

需要求平均的精确率。

因此对于宏观平均,我们先计算每个数据集的精确率:

因此其宏观平均为:

而如果我们希望计算微观平均,我们需要将所有的混淆矩阵相加:

我们可以计算其微观平均精确率为: