在庞大且不平衡的文本数据集上使用主动学习的正确方法是什么?

数据挖掘 数据集 阶级失衡 主动学习
2022-02-16 15:45:28

我正在研究一个巨大且未标记的文本数据集。它有超过30M 行(=句子)。

我们试图通过分析 20 个不同的法律问题(例如种族主义、侮辱等)来检测非法判决。所以,这是一个多标签分类问题正如你可以猜到的,大部分句子都是合法的,这使得数据集非常不平衡。

我们决定专注于 3 个主要课程(根据反馈)并开始使用主动学习(AL)来获得训练集和验证集(稍后将创建测试集):

  • 我们提取了第一组 1500 个句子并标记了它们。该数据集是由一半随机句子和一半明智选择的句子(使用正则表达式和嵌入邻近度)创建的。因此,这个数据集并不代表真实的分布。

  • 我们将第一组分成训练集和验证集(500 / 1 000)

  • 由此,我们在训练集上训练了一个模型,并从池集中提取了 1000 个样本进行标记(使用 AL 选择函数)。标记后,我们将这些样本注入训练集中。我们多次执行此过程。

  • 最后,我们的训练集中有 7000 个样本,验证集中有 1000 个样本。

一旦这个过程完成,我们训练了一个 BI-LSTM,我们惊讶地发现我们的验证集(~ 0.97) 比我们的训练集 (~ 0.90)有更好的 f1-score 。我们的理解是,训练集(通过 AL)比我们的验证集有更复杂的案例,在这种情况下,我们显然无法检查模型在那些“复杂案例”上是否表现良好。

它还会产生烦人的副作用,例如过早触发提前停止,或者根据验证集保存“最佳模型”,而某些时期显然更擅长管理更多不同的案例。

我们想在我们的验证集中添加一些新的特定案例。所以,我们认为,在我们的过程中,我们应该将一部分新标记的样本添加到我们的验证集中(比如说 15%)。

优点:

  • 我们的验证集中更多不同的案例,更好的指标
  • 在训练阶段不再有烦人的副作用

缺点:

  • 我们的训练集中的数据更少
  • 过度拟合这些极端情况的风险???

你认为这是一个好方法吗?
主动学习有什么共同点吗?
我们在标签过程中是否做错了什么?

0个回答
没有发现任何回复~