文本多标签分类问题的评价指标解析

1.问题缘起

八戒科技服务提供了4139条已标注的科技政策文本数据和12000多条未标注的文本数据,准备对其中的两个字段 产业类别政策类型 进行自动标注。

这实际是一个多标签文本分类问题,在模型构建和评估过程中,涉及到四个指标,分别是: micro avg macro avg weighted avgsamples avg 它们之间的区别点怎样?分别适用于什么问题情境?这些问题都需要逐一厘清。

2.四个评价指标的内涵

为了精准阐释四个指标的内涵,经查找中英文资料,分别说明如下:

  1. micro avg: each instance has equal weight. 数量多的类别对结果有最大的影响。首先,对所有类别标签中的实例结果汇总,然后对汇总结果计算指标。

‘micro’:Calculate metrics globally by counting the total true positives, false negatives and false positives.

‘micro’:通过先计算总体的TP,FN和FP的数量,再计算F1

  1. macro avg: each class has equal weight. 首先计算每类标签对应的指标,然后平均每类指标下的指标。

‘macro’:Calculate metrics for each label, and find their unweighted mean. This does not take label imbalance into account.

‘macro’:分别计算每个类别的F1,然后做平均(各类别F1的权重相同)

‘macro’: 对每一类别的f1_score进行简单算术平均(unweighted mean), with assumption that all classes are equally important。

Calculate metrics for each label, and find their unweighted mean. This does not take label imbalance into account.

宏平均(macro avg)和微平均(micro avg)的对比

  • 如果每个类别标签下的样本数量差不多,那么宏平均和微平均没有太大差异;

  • 如果每个类别标签下的样本数量差异很大,如果更注重样本量多的类别标签,那么最好使用微平均指标;如果更注重样本量少的类别标签,那么最好使用宏平均指标。

  • 如果微平均大大低于宏平均,那么就应该检查样本量多的类别,如果宏平均大大低于微平均,那么就应该检查样本量少的类别。

  1. weighted avg:考虑了样本权重的平均值,对每一类别的f1_score进行加权平均,权重为各类别数在y_true中所占比例。

Calculate metrics for each label, and find their average, weighted by support (the number of true instances for each label). This alters ‘macro’ to account for label imbalance; it can result in an F-score that is not between precision and recall.

  1. samples avg:对每个实例计算指标,然后再平均(仅对多标签分类有意义,与accuracy分数不同)

Calculate metrics for each instance, and find their average (only meaningful for multilabel classification where this differs from accuracy_score).

samples avg 应用在multilabel问题上。它不会计算每个类,相反,它会在评估数据中,通过计算真实类和预测类的差异的metrics,来求平均(sample_weight-weighted)

需要说明的是,这四个指标在scikit-learn 库中主要通过以下函数参数设置实现


f1_score (y_true, y_pred, labels=None, pos_label=1, average=’binary’, sample_weight=None)

关键参数是average:string, [None, ‘binary’ (default), ‘micro’, ‘macro’, ‘weighted’, ‘samples’],This parameter is required for multiclass/multilabel targets.


3.四个评价指标的使用小结

通过上述分析可以得到以下几点结论:

  • 四个指标主要用在多标签分类(multi-label classifcaiton)的应用场景,即一条数据可能有多个标签,这不同于多分类(multi classification)问题,后者指一条数据仅对应多个类别中的一类。

  • 如果训练集中各类别的实例数量相差不大,那么 micro avgmacro avg 值差不多,否则两者差异较大。因此,可以根据 micro avgmacro avg 值差异来考察训练集类别数量是否平衡,不平衡的数据集要想办法解决样本类别的不平衡问题。

  • macro avg 计算时,不考虑各类别实例数量的差异,等权重计算;weighted avg 计算时,考虑各类别实例数量的差异,非等权重计算,权重为各类别数在y_true中所占比。

参考资料:

补充内容如下:

这两天对多标签分类问题研究了一下,对kashgari包的两点优化建议:

  • 文本的多标签之间常有一定关联性,目前提供的文本分类算法都不太考虑标签之间的相关性,建议把这方面的开源算法纳入;

  • 多标签分类的评价指标,建议将sklearn中的hamming loss,ranking loss 和ranking average precision score纳入(这些指标都可以基于Scikit-learn的现成封装,直接调用即可实现,详见:https://www.w3cschool.cn/doc_scikit_learn/scikit_learn-modules-generated-sklearn-metrics-log_loss.html?lang=en) 而不只是使用适用于多分类问题的 precision、recall和F1 measure来评价。

Avatar
Wu, Jun
Associate professor
Next
Previous