使用 ML 协助在具有高度不平衡类的数据集中进行人工标注

机器算法验证 分类 不平衡类 数据预处理 主动学习
2022-04-08 19:17:25

使用 ML 辅助人类注释是否存在科学问题?

我有一个 3 类未标记数据集,其中 500 个元素中只有 1 个属于感兴趣的 2 个类。

对于未标记数据的所有元素,标签并不是很容易辨别,但是由于多数类的大多数元素容易被简单的 NN 检测到,它可以用来过滤掉多数类的大多数元素,从而将数字降低到大约 100 分之一,并将人工注释器的有效性时间提高 50 倍。标记的数据集将用于训练、测试和验证分类器。

但是,我可以预见从学术角度来看这可能会导致问题的原因:

  • 如果注释数据由于在人工注释之前使用的 ML 中的偏差而无法代表,则分类器可能难以泛化
  • 使用不基于人工提供的合理规则的 ML 数据清理器,在数据分析过程的开头放置了一个黑匣子
  • 仅注释一小部分高度流行的类会使数据集非常有选择性,这是否会引起对滥用这种偏见的批评(即操纵期望的假设)

赞赏所有想法

3个回答

我认为关键是要记住你真正追求的是什么。这是一场 kaggle 比赛吗?那么当然,你的方法听起来不错。

如果这是针对将要投入该领域的学术论文或医学工作,并且您想要一些能够很好地概括并通过同行评审的东西,那么我认为这不是一个好方法。因为你不能忽略你的一些样本。

除了该方法的“有效性”或“正确性”之外,它也可能没有您想象的那么有用。部分问题是您提出的预分类器。它是 100% 准确的吗?你怎么知道,如果它丢弃了太多而无法真正浏览。问题是,如果它不是 100.0% 准确,那么您会因为丢弃它们而丢失最有价值的训练示例,因为它们是在愚弄当前算法的那些。

如果您将永久使用此预分类器,那么拥有此步骤是有效的,它只是您整个“黑匣子”的一部分。但是,您需要准确报告它丢弃的误报,作为您整体评估的一部分(最好是您的整体损失函数,以便您可以正确优化它)

如果有一个模型可以为您标记数据,那么为什么还要训练一个模型呢?

我会说使用另一个模型来标记模型的数据是不好的。首先,如果存在可以标记数据集的更好模型,为什么不直接使用那个好的模型。其次,如果类是高度不平衡的,这更多是您需要准确标签的原因,因此您的模型可以做到最好。否则你只是混淆它,你为什么要这样做?

标记数据对人类来说是一项艰巨的任务,但这就是为什么我们试图让机器变得足够好,以便我们可以在某个时候停止这样做。

如果你想要一种更简单的方法,你首先只标记少数类,然后标记相同数量的其他类并使用它进行训练,这样你的数据集就不再不平衡了。例如,假设您有 100 个样本,10、40、50 是每个类中的样本数。因此,您将从标记 10 开始,从 40 中抽取样本 10,然后再标记 50 并标记它们;然后在包含 30 个无偏样本的数据集上训练模型。这种方法有利有弊,但我会在这里停下来,因为这不是你最初的问题。

的确,通常更多的数据会导致更好的决策。在您的情况下,您尝试做的是加速标记过程,并且您建议的方式是有效的。由于问题是应该手动标记哪些示例,并且使用系统以高置信度丢弃“无趣”示例确实是有意义的。这不是忽略示例,而是优先考虑其中一些不重要的示例。

拥有一个能够很好地概括训练数据真实分布的分类器是另一个主题。您可以通过以分层方式评估保留集中拆分的分类器来确保这一点。由于从其中一个类中获取样本更便宜,您可以在标记数据后在稍后的步骤(通过过度/不足采样)中平衡训练集。