文本分类性能指标及其计算方法

假设完成一个文本分类任务,一共有N个类别,类别名称分别为C1,…, Cn,当你完成了分类任务以后,你可以得到这样一张表格:

Label True Positive False Positive False Negative
C1 tp-1 fp-1 fn-1
C2 tp-2 fp-2 fn-2
|
Cn tp-n fp-n fn-n

表中每一行显示某一类别关于True Positive、False Positive、True Negative、False Negative的相关数据。

  • True Positive:判定为该类别并且真实属于该类别
  • False Positive:判定为该类别但真实不属于该类别
  • False Negative:判定不属于该类别但真实属于该类别

1. 召回率、准确率、F值、宏平均、微平均

根据上面几个指标,我们定义召回率、准确率、F值。
召回率(Recall):
\[ R_i = \frac{TP_i}{TP_i+FN_i} \] 准确率(Precision):
$$ P_i = \frac{TP_i}{TP_i+FP_i} $$
其中i=1,…,n 即每一个类别可以计算出各自的召回率、准确率。
接下来,计算宏平均值和微平均。
从名字上可以看出,宏平均值是计算各个类别的召回率、准确率的平均值,即从宏观上来求平均;微平均则是将各个类别计算指标时的分子分母求和,再进行计算。形式化计算如下:
$$ R_{micro} = \frac{\sum_{i=1}^{|C|}TP_i}{\sum_{i=1}^{|C|}(TP_i + FN_i)}; P_{micro} = \frac{\sum_{i=1}^{|C|}TP_i}{\sum_{i=1}^{|C|}(TP_i + FP_i)} $$
$$ R_{macro} = \frac{1}{|C|}\sum_{i=1}^{|C|}\frac{TP_i}{TP_i+FN_i}; P_{macro} = \frac{1}{|C|}\sum_{i=1}^{|C|}\frac{TP_i}{TP_i+FP_i}$$
结合公式和变量的定义,可以发现,微平均其实就是 判断正确的条数/总条数 ,即和正确率ACCURACY是一个意思。
再介绍一下F值的计算,F值即准确率与召回率的调和平均数,即
$$ F = \frac{2PR}{P+R} $$
更为一般的计算F值的公式为:
$$ F = \frac{(\beta^2+1)PR}{\beta^2P+R} $$
当$\beta $取1时即为前一个式子,也称F1值。
下面通过举一个例子,来计算上述指标。假设是一个二分类问题,相关数据如下表。

Label tp fp fn recall precision F1
C1 250 20 50 0.8333 0.9259 0.8772
C2 180 50 20 0.9 0.7826 0.8372
total 430 70 70 1.7333 1.7085 /
macro-average 0.8667 0.8543 0.8605
micro-average 0.86 0.86 0.86

2. 其他文本分类性能指标及其计算方法

(1) Kappa系数

全称叫做Cohen’s kappa coefficient,下面是维基百科中给出的定义:

Cohen’s kappa coefficient is a statistic which measures inter-rater agreement for qualitative (categorical) items. It is generally thought to be a more robust measure than simple percent agreement calculation, since κ takes into account the agreement occurring by chance.

个人翻译为:

Cohen’s kappa coefficient(Kappa系数)是一个在定性分析(分类)问题应用中用来度量”内部-外部”一致程度的统计量。它常常比简单的一致百分比更健壮,
因为kappa系数考虑了随机一致性的概率。

kappa系数计算公式为:
$$ k = \frac{p_o-p_e}{1-p_e} $$
$ p_o $ 指observed agreement percentage,即我们常说的正确率;
$ p_e $ 指probability of agreement by chance,即随机一致性概率 。
举例说明:
考虑一个简单的分类问题,一共有2个类别C1,C2。写出分类的混淆矩阵

实际\判定 C1 C2 total
C1 80 20 100
C2 200 700 900
total 280 720 1000

$$ p_o = \frac{80+700}{1000} = 0.78 $$
$$ p_e = \frac{280}{1000}\times \frac{100}{1000} + \frac{720}{1000} \times \frac{900}{1000} = 0.676 $$
$$ k = \frac{0.78-0.676}{1-0.676} = 0.3209 $$
可以看到,kappa系数考虑到了类别的实际分布比例,因此在不平衡语料的分类性能衡量上,使用kappa系数具有实际意义。
还是上述例子,有另外一个分类器产生了新的混淆矩阵:

实际\判定 C1 C2 total
C1 60 40 100
C2 150 750 900
total 210 790 1000

$$ p_o = \frac{60+750}{1000} = 0.81 $$
$$ p_e = \frac{210}{1000}\times \frac{100}{1000} + \frac{790}{1000} \times \frac{900}{1000} = 0.732 $$
$$ k = \frac{0.78-0.732}{1-0.732} = 0.1791 $$
可以看到,第二个分类器整体正确率有提高,但是kappa系数却降低了很多。因为第二个分类器在数量较多的C2类别中性能较好,但在数量较少的C1类别中的分类性能较差。这就说明这个分类器在不平衡语料上的表现其实不如上一个分类器(当然,前提是两个类别的重要性相同)。假如设计一个分类器,将所有样本都判定为C2类别,则能达到0.9的正确率,但kappa系数却为0。

(2) 条件kappa系数(这里不是很了解)

类似地,条件kappa系数用来衡量每个类别的分类性能。上述分类器1关于类别C1的kappa系数为
$$ k=\frac {0.08-0.28 \times 0.1}{0.28-0.28 \times 0.1}=0.2063 $$
研究认为,kappa系数与分类精度有如下关系:

kappa系数 分类质量
0.0 很差
0.0-0.2
0.2-0.4 一般
0.4-0.6
0.6-0.8 很好
0.8-1.0 极好

(3) 一点平均正确率法

11点平均正确率法师另外一种用单个值来衡量分类性能的指标。
Taghva et al.(2004)为了更加全面地评价一个分类器在不同召回率情况下的分类效果,调整分类器使得其召回率分别为0,0.1,0.2,0.3,0.4,..,0.9,1.0,
然后计算出对应的11个正确率,取其平均值,这个平均值即为11点平均正确率,用这个值来衡量分类器的性能。

(4) ROC曲线

ROC曲线
横坐标:假阳率
$$ x-axis = \frac{FP}{TN+FP} $$
纵坐标:召回率
$$ y-axis = \frac{TP}{TP+FN} $$
理想点(0,1)
可以推导出曲线上的点与原点的连线的斜率即为准确率
y = x 代表随机猜测曲线
AUC:ROC曲线与随机猜测线围成的面积,面积越大,性能越好

参考资料

  1. Evaluation methods in text categorization
  2. 宗成庆. 统计自然语言处理[M]. 清华大学出版社, 2008.
  3. Aas, K., & Eikvil, L. (1999). Text categorisation: A survey. Raport NR, 941.
  4. Taghva, K., Borsack, J., Lumos, S., & Condit, A. (2003). A comparison of automatic and manual zoning. Document Analysis and Recognition, 6(4), 230-235.
  5. 分类精度评价与提高
  6. 维基百科-Cohen’s kappa
  7. 推酷-重磅!8大策略让你对抗机器学习数据集里的不均衡数据
此条目发表在学术分类目录,贴了, 标签。将固定链接加入收藏夹。

文本分类性能指标及其计算方法》有 2 条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注