【学而不思则罔,思而不学则殆】
1.问题
NLP序列标注问题,样本不均衡怎么解决?
2.解释
以命名实体识别(NER)为例,这个样本不均衡有两种解释:
(1)实体间类别数量不均衡,比如医疗知识图谱中,疾病现象比治疗手段多得多;
(2)实体和非实体的数量不均衡,一句话中,标注为O的数量占比比较大,约60%-90%。
第一类问题会导致实体类别分类不准,也就是会影响P(查准率);第二类问题会导致实体可能识别不出来,会影响R(查全率)
3.思路
针对第一类问题:
传统的几个思路
(1)思路一:增加小样本数量,首先考虑增加原始样本数量,其次考虑数据增强(如滑动窗口),属于简单有效的方法;
(2)思路二:在不影响性能的情况下,可以考虑减少样本数量多的类别样本,这种也能平衡类别数量,还能加快训练;
(3)思路三:改变损失函数,本质是给小样本加权,比如用focal loss。
(4)思路四:用两个或多个分类模型,一个用来识别大样本类别,一个用来识别小样本类别;极端情况下,一种类别一个分类算法,好处是每种类别的性能可以针对性调优,坏处是模型太多,训练和预测更耗时。
就像问题中的图大样本和小样本比较极端,就可以考虑用两个分类模型。
针对第二类问题:
(1)思路一:剔除掉纯O的句子
(1)思路二:减少一句话中O的数量
如:
- 建立原句的语法分析树,只取需要的部分。
参考:
知乎中有类似的问题:
https://www.zhihu.com/question/340333687