4.9 评估:准确率、召回率与 F 度量
为介绍文本分类的评估方法,先考虑简单的二元检测任务。例如,在垃圾邮件检测中,要把每段文本标为垃圾邮件(“正类”)或非垃圾邮件(“负类”)。对每封邮件,我们既要知道系统是否将它判断为垃圾邮件,也要知道它实际上是否为垃圾邮件,即人工给出的、系统试图匹配的标签。我们把这些人工标签称为金标准标签(gold labels)。
再假设你是 Delicious Pie Company 的 CEO,想了解社交媒体上人们对公司馅饼的评价,于是构建了一个检测相关推文的系统。这里,正类是关于 Delicious Pie 的推文,负类是其他所有推文。
两种情形都需要度量检测器表现的方法。评估任何检测系统时,可以先构造图 4.7 所示的混淆矩阵(confusion matrix)。它以系统输出和金标准标签为两个维度,用表格展示算法相对于人工标签的表现,每个单元格对应一类可能结果。例如,垃圾邮件检测中的真正例(true positive)是确实为垃圾邮件且被系统正确判断为垃圾邮件的文档;假负例(false negative)则是确为垃圾邮件却被系统错误标为非垃圾邮件的文档。
表格右下给出了准确率(accuracy):系统正确标注的观测占全部观测的比例。准确率看似自然,但一般不适合类别不平衡的文本分类任务,例如垃圾邮件占邮件的大多数,或绝大多数推文都与馅饼无关。
| 金标准标签 | ||||
| 金标准正类 | 金标准负类 | |||
| 系统输出 | 系统正类 | 真正例(tp) | 假正例(fp) | 准确率 = tp/(tp+fp) |
| 系统负类 | 假负例(fn) | 真负例(tn) | ||
| 召回率 = tp/(tp+fn) | 正确率 = (tp+tn)/(tp+fp+tn+fn) | |||
图 4.7 用于展示二元分类系统相对于金标准标签表现的混淆矩阵。
假设检查了 100 万条推文,其中只有 100 条讨论我们的馅饼,其余 999,900 条完全无关。一个把所有推文都判为“与馅饼无关”的简单分类器会有 999,900 个真负例、100 个假负例,准确率高达 99.99%。但它一条目标顾客评论也找不到,完全没有用。因此,当目标是发现罕见或频率不均衡的事物时,准确率并不是好指标,而现实中这种情形非常普遍。
所以通常改用图 4.7 中另外两个指标:准确率(precision)和召回率(recall)。准确率衡量系统检测出的项目(标为正类)中,实际确为正类的比例:
召回率衡量输入中实际存在的目标项目里,被系统正确识别出来的比例:
前面那个“什么都不是馅饼”的分类器虽然准确率为 99.99%,召回率却为 0:它没有真正例,却有 100 个假负例,因此召回率为 。它在寻找相关推文时的准确率也同样成问题。与正确率不同,准确率和召回率强调真正例,即找到本应寻找的目标。
有多种方法可将准确率和召回率合并为一个指标,其中最简单的是 F 度量(F-measure;van Rijsbergen, 1975):
参数 可根据应用需求调整召回率与准确率的重要程度。 偏重召回率, 偏重准确率; 时二者同等重要,这是最常用的指标,称为 ,简称 :
F 度量来自准确率和召回率的加权调和平均。若一组数的调和平均为其倒数算术平均的倒数,则:
因此:
采用调和平均,是因为两个值的调和平均比算术平均更接近较小者,因此会更重视二者中较低的指标,在这里更为保守。
4.9.1 两个以上类别的评估¶
上面定义准确率和召回率时只涉及两个类别,但许多 NLP 分类任务有更多类别。即使情感分析也常包含正面、负面、中性三类,文本分类、情绪检测等任务的类别还可能更多。
这时需稍微修改准确率和召回率的定义。图 4.8 是一个假想的三分类邮件任务(紧急、普通、垃圾邮件)的混淆矩阵。例如,系统把一封垃圾邮件误标为紧急邮件;还可为每个类别分别计算准确率和召回率。要得到反映系统整体表现的单一指标,可以用两种合并方式:宏平均(macroaveraging)先计算每个类别的表现,再对类别取平均;微平均(microaveraging)把所有类别的判断合入一个混淆矩阵,再从中计算准确率和召回率。图 4.9 展示了各类别的独立混淆矩阵,以及微平均和宏平均准确率的计算。
| 金标准标签 | ||||
| 紧急 | 普通 | 垃圾邮件 | ||
| 系统输出 | 紧急 | 8 | 10 | 1 |
| 普通 | 5 | 60 | 50 | |
| 垃圾邮件 | 3 | 30 | 200 | |
| recallu=8/(8+5+3) | recalln=60/(10+60+30) | recalls=200/(1+50+200) | ||
图 4.8 三分类任务的混淆矩阵,展示每一对类别 中,来自 的文档有多少被正确或错误地分到 。
类别 1:紧急 | 类别 2:普通 | 类别 3:垃圾邮件 | 合并 | ||||||||
真实紧急 | 真实非紧急 | 真实普通 | 真实非普通 | 真实垃圾邮件 | 真实非垃圾邮件 | 真实是 | 真实否 | ||||
系统紧急 | 8 | 11 | 系统普通 | 60 | 55 | 系统垃圾邮件 | 200 | 33 | 系统是 | 268 | 99 |
系统非紧急 | 8 | 340 | 系统非普通 | 40 | 212 | 系统非垃圾邮件 | 51 | 83 | 系统否 | 99 | 635 |
precision= | precision= | precision= | 微平均 precision= | ||||||||
宏平均 precision |
图 4.9 图 4.8 三个类别各自的混淆矩阵,以及合并混淆矩阵、微平均准确率和宏平均准确率。
由于计数被合并,微平均会由频率较高的类别(这里是垃圾邮件)主导。宏平均更能反映较小类别的统计特征,因此当所有类别的表现同等重要时更合适。