3

我正在做一个执行文本自动分类的项目,我有很多数据集,如下所示:

正文 | 分类名称

xxxxx... | AA

yyyyy... | BB

zzzzz... | AA

然后,我将使用上面的数据集生成一个分类器,一旦有新文本出现,分类器可以用正确的 CategoryName 标记新文本(文本是自然语言,大小在 10-10000 之间)

现在,问题是,原始数据集包含一些不正确的数据,(例如 AAA 应该标记为类别 AA,但它意外标记为类别 BB),因为这些数据是手动分类的。而且我不知道哪个标签是错误的,有多少百分比是错误的,因为我无法手动查看所有数据......

所以我的问题是,我该怎么办?

  • 我可以通过某种自动方式找到错误的标签吗?
  • 新数据到来时如何提高准确率和召回率?
  • 如何评估错误数据的影响?(因为我不知道有多少百分比数据是错误的)
  • 还有其他建议吗?
4

3 回答 3

4

显然,没有简单的方法可以解决您的问题 - 毕竟,如果您已经拥有可以检测错误分类的系统,为什么还要构建分类器。

你知道错误的分类对你的学习有多大影响吗?如果它们只有一小部分,它们应该不会对性能造成太大影响。(编辑。啊,显然你没有。无论如何,我建议你试一试——至少如果你在看到一个错误的结果时能识别出一个错误的结果。)

当然,您总是可以先训练您的系统,然后让它建议训练数据的分类。这可能会帮助您识别(并纠正)错误的训练数据。这显然取决于您拥有多少训练数据,以及它是否足够广泛以允许您的系统在有错误数据的情况下学习正确的分类。

于 2013-01-22T14:24:41.273 回答
1

您可以手动查看任何数据以找到一些错误标记的示例吗?如果是这样,假设错误标记存在某种模式,您也许可以训练第二个分类器来识别错误标记的数据。了解错误标记是否是一个纯粹的随机过程(它只是训练数据中的噪声)或者错误标记是否与数据的特定特征相关,这对您很有用。

如果您无法估计训练集的哪一部分实际上被错误标记,则无法评估错误标记数据对特定数据集的影响。您在评论中提到您有大约 500 万条记录。如果您可以正确地手动标记数百个,您可以在该数据集上训练您的分类器,然后查看分类器在引入随机错误标记后的表现。您可以使用不同百分比的错误标记数据多次执行此操作,以查看对分类器的影响。

定性地说,拥有大量错误标记的样本会增加过度拟合的影响,因此更重要的是不要将分类器过度拟合到数据集。如果您有一个测试数据集(假设它也存在标签错误),那么您可能会考虑将您的分类器训练为在测试数据集上低于最大分类精度。

于 2013-01-22T15:57:51.710 回答
0

人们通常通过拥有多个注释器并计算他们的一致性来处理您描述的问题(例如 Fleiss 的 kappa)。这通常被视为任何分类器性能的上限。如果三个人给了你三个不同的答案,你就知道这个任务很艰巨,你的分类器没有机会。

附带说明:如果您不知道有多少记录被错误标记,则您不了解问题的关键属性之一。随机选择 1000 条记录,并花一天时间查看它们的标签以获得一个想法。这真的是值得花的时间。例如,我发现每小时可以轻松查看 500 条带标签的推文。健康警告:这非常乏味,但一个上午的复习让我很好地了解了我的注释者是多么分心。如果有 5% 的记录不正确,则不是这样的问题。如果 50 是不正确的,你应该回去告诉你的老板,告诉他们这是不可能的。

作为另一个旁注:有人提到主动学习。我认为值得从文献中研究选项,记住标签可能必须改变。你说很难。

于 2013-01-23T11:29:09.823 回答