RandolphVI / Multi-Label-Text-Classification

About Muti-Label Text Classification Based on Neural Network.
Apache License 2.0
553 stars 143 forks source link

如何解决类别不均衡的问题? #9

Open JiaWenqi opened 5 years ago

JiaWenqi commented 5 years ago

我这边有这样的数据,有三级标签(层级包含关系),很显然一级标签数量最多,二级或三级标签的数量和一级标签相差好几个数量级,并且每级标签都有热门标签和冷门标签,热门和冷门也相差好几个数量级,针对这种情况我应该如何处理呢?

RandolphVI commented 5 years ago

@JiaWenqi

首先你要明确自己要做什么样的任务,是要预测全部层级的所有标签还是就单单预测最 general 那层的标签。根据你任务的不同,就涉及到了是做 Extreme Multi-Label (涉及每一层级标签数量很多)还是 Hierarchical Multi-Label (涉及层级联系)问题。

每个层级标签都有热门标签和冷门标签,初步想到的做法有:

  1. 下采样删去一些含有热门标签的数据进行数据平衡
  2. 如果冷门标签很少,则可以将好几个冷门标签都 group 成一个标签。
  3. 扩展你的数据(最暴力最有效的做法)

拆开每一层来讲,都是一个 flatten 的 Multi-Label 问题,关于类别不均衡问题,更多的做法可以参考 09 年 IEEE 的一篇文章 《Learning from Imbalanced Data》,应该会对你的工作有所帮助。

JiaWenqi commented 5 years ago

恩,我目前采取的方式就是,先统计所有数据的标签分布,然后将这些标签按照doc的数量分区间来做,doc数量少的标签区间对应的doc,会全部取;doc数量多的标签区间对应的doc会采样一部分,最后的结果,热门标签的数量在万级别和千级别的数量级,冷门标签数量在百级别数量级(有些冷门标签对应的doc数量总共也就100多)。不知道这样数量比例是否合适?

RandolphVI commented 5 years ago

@JiaWenqi

个人觉得和你总体数据量大小挂钩。 如果数据量大概在十万以内,按照个人经验而言,你这样的比例应该差不多。