Precision vs Recall
precision是查准率——是所有做出正类预测的情况下,正确的概率。
公式:P = 预测为正且真实为正的样本 / 模型预测为正的所有样本
recall是查全率——对所有真实为正的样本,模型所覆盖的比例。查全率recall越高,则正样本被覆盖到的比例越大;如果放到信息检索任务中,recall越高,则越多有价值的信息被检索出来。
公式:R = 预测为正且真实为正的样本 / 真实为正的所有样本
如果贪婪地尽可能把测试样本标记为正,则正样本覆盖率增加,查全率recall会随之增加,但查准率precision下降,在某乎上看到的一个很形象的比喻可以用来描述这种做法:宁可错杀一千,不肯放过一个。
如果保守地只对确信无疑的样本才标记为正,那么查准率precision自然会升高,而不可避免地会产生大量漏检,查全率recall也就降低了。
F1-score and Fβ-score
F1-score可以全面考虑precision和recall,
公式:F1-score = 2 P R / (P + R)。 由公式可以看出,查全率和查准率对于F1-score的贡献是相同的,并且单纯看F1-score值的话没有办法判断是precision低了还是recall低了,于是在多分类的场景下,通常可以把每一个类别的P,R,F1都计算出来,然后综合对比这三个指标。
其实,F1-score是Fβ-score的一种特殊情况。Fβ-score的公式为:
查全率和查准率是相互矛盾的两个指标(通常一个低了,另外一个会更高)。由于根据应用场景的不同,我们会对P和R有不同的偏好, 比如在信贷风险评估的任务中,我们希望尽可能降低风险,那么就会对recall更加注重(宁可错杀一千,不肯放过一个!)。Fβ-score为P和R的偏好提供了一种方便的设置方法,通过降低β就增加了recall的权重,降低了precision的权重,对于recall相对较高的模型,最终的Fβ-score也会较高。同理,增加β就增加了precision的权重,降低了recall的权重。β = 1时recall和precision权重相等,等价于F1-score。
ROC曲线和AUC指标
注意:ROC和AUC是二分类独有的一种评测指标。
ROC曲线的绘制,是基于真正例率True positive rate(简称TP) 和假正例率False positive rate(简称FP)。
真正例率TP = 所有正样本中被模型标记为正的比例 = 模型标记为正且真实为正的样本数 / 所有正样本数
假正例率FP = 所有负样本中被模型标记为正的比例 = 模型标记为正但真实为负的样本数 / 所有负样本数
如何绘制ROC曲线呢?二分类模型对于每一个测试样本都会输出一个概率值,该概率值代表了测试样本标记为正例的可能性,我们把模型对所有测试样本输出的概率值,按照概率值由大到小,对这些测试样本做一个降序排序。接着,以FP为横轴,TP为纵轴,作为绘制ROC的坐标系。对降序排列的测试样本,依次把每一个样本标记为正,同时计算当前时刻下的FP和TP,并在ROC的坐标系中对应的点做一个标记。在所有测试样本都被标记为正之后,假如有t个测试样本,就有t个时刻的FP和TP,即t个坐标点,把这t个点连接起来,就得到了ROC曲线(如下图所示)。ROC曲线与FP轴、FP=1围成的面积,等于AUC(如下图中阴影部分面积)。AUC可以用于描述二分类模型对于正负样本的区分程度,区分程度越好的模型,AUC的值越接近1。
对这种区分程度,可以这样理解:区分程度越好的二分类模型,能够对正例输出更大的概率值,对负例输出更低的概率值,那么对所有测试样本的输出概率做降序排列之后,由于区分度更好的模型能够对大部分正例输出更大的概率值,故大部分正例会被排列在左侧,大部分负例会因为更小的输出值而被排列在右侧,所以在从大到小依次把每个样本标记为正的这个过程中,曲线先是沿着TP方向(纵轴)不断上升,上升到接近1的时候,大部分正例都被遍历到了,这时曲线才开始沿着FP方向不断往右走...TP和FP与TP=1,FP=1围成的是一个面积为1的正方形,故对于区分度很显著的模型,我们最终绘制出的ROC曲线,其AUC值就接近于1了。
AUC的优势在于,在样本数量足够多的情况下,样本不平衡问题对于AUC的影响较小,且样本分布发生一定变化的情况下AUC也也能保持稳定。AUC的劣势在于,只能用于二分类场景,多分类无法使用AUC。
NLP相关指标
BLEU-n
BLEU主要考察的是生成文本的n-gram对正确答案n-gram的覆盖程度,公式如下:
Pn = 生成文本的n-gram有多少个出现在了正确答案的n-gram中 / 生成文本的n-gram总数
注意:生成文本如果有多个相同n-gram,取值最大不超过正确答案的该n-gram数量的最大值
可以看到,当生成文本越短时,Pn容易更高,因此可以引入惩罚因子BP,惩罚短的生成文本。
为了综合考量文本生成的质量,通常选择n=1->4的BLEU值相加求平均,然后乘以惩罚因子得到最终的指标结果(平衡各阶统计量的值):
BLEU = BP · exp(wΣlogPn) w=1/4
BLEU的缺点主要有以下几点:
1.倾向于短文本,即使引入惩罚因子也还是会有偏向;
2.没有考虑句子结构,句子意义;
3.不能很好的处理形态丰富的语言,比如语素多的语言(如秘鲁语);
4.只考虑了准确率,没有考虑召回率,没考虑正确答案中哪些n-gram在生成文本中没出现。
Meteor
Meteor首先执行对齐,对齐是指在两个文本中寻找单词与单词之间的唯一映射关系,会有多种对齐方式,所以会通过启发式的方法寻找到chunk数量最少的对齐方式,chunk是指连续的、且在两部分文本中都出现、词序相同的单词片段,对齐过程中会考虑同义词和词干相同的单词;划分好对齐方式后,根据对齐关系,得到能生成文本和正确答案中共现的单词数量m,之后根据生成文本和正确答案中共现的单词数量m计算准确率和找回率:
准确率P = m/生成文本长度,
召回率R = m/正确答案长度,
接着计算P和R的调和平均(有一个超参α),得到F值,针对最终的F值,引入了惩罚系数BP:
BP = r(chunk/m)β ,
其中r和β是超参。结合惩罚系数之后,最终得到
score = (1-BP)×F值。
从直觉上看,惩罚系数的意义在于:chunk数越小,单词对齐数量m越多,说明句子越流畅,则惩罚系数越小。
与BLEU相比,Meteor的优点在于:①利用wordNet等外部知识扩充了同义词集,即考虑了同义词;同时考虑了单词的词形,对于相同词干的部分匹配的词,会给予一定的奖励;②利用chunk评价句子流畅性,寻找连续的单词形成“生成文本”和“正确答案”能对齐的chunk,chunk越少说明每个chunk平均长度越长,意味着候选译文和参考译文的语序越一致;③召回率和准确率二者都考虑了,用F值作为最后的评价指标。
Meteor的缺点在于:①超参数多,针对不同数据集可能有不同的最合适超参;②需要外部知识如wordNet提供同义词集,进行单词对齐,如果是wordNet中不包含的语言,就没办法采用meteor指标。
ROUGE-L
ROUGE-L中的“L”代表“最长公共子序列”的首字母,其计算方式是:
P=最长公共子序列的长度/生成文本的长度,
R=最长公共子序列的长度/正确答案的长度,
P和R做一个调和平均,综合考虑了准确率和召回率。
直觉上来看,ROUGE-L缺点是没有考虑句子的含义,不好评价表达方式比较丰富的语言。