我正在开展一个执行文本自动分类的项目,我有很多数据集,如下所示:
xxxxx ... | AA
yyyyy ... | BBzzzzz ... | AA
然后,我将使用上面的数据集生成分类器,一旦新文本到来,分类器可以使用正确的CategoryName标记新文本 (文字是自然语言,大小在10-10000之间)
现在,问题是,原始数据集包含一些不正确的数据(例如,AAA应标记为类别AA,但它被意外标记为类别BB),因为这些数据是手动分类的。我不知道哪个标签出错了,有多少百分比是错误的,因为我无法手动查看所有数据....
所以我的问题是,我该怎么办?
答案 0 :(得分:4)
显然,没有简单的方法可以解决您的问题 - 毕竟,如果您已经有一个可以检测错误分类的系统,为什么要构建分类器。
你知道错误的分类对你的学习有多大影响吗?如果只有一小部分,它们不应该对性能造成太大影响。 (编辑。啊,显然你没有。无论如何,我建议你尝试一下 - 至少如果你在看到错误的结果时可以找出错误的结果。)
当然,您可以随时首先训练您的系统,然后建议您对训练数据进行分类。这可能有助于您识别(并纠正)有缺陷的培训数据。这显然取决于您拥有多少训练数据,以及它是否足够宽,以使您的系统能够在数据错误的情况下学习正确的分类。
答案 1 :(得分:1)
您是否可以手动查看任何数据,以找到一些错误标记的示例?如果是这样,您可能能够训练第二个分类器来识别错误标记的数据,假设错误标记存在某种模式。如果错误标记是纯随机过程(它只是训练数据中的噪声),或者错误标记是否与数据的特定功能相关,那将是有用的。
如果您没有估计实际上错误标记了训练集的哪一部分,则无法评估错误标记数据对特定数据集的影响。你在评论中提到你有~5M的记录。如果您可以正确地手动标记几百个,则可以在该数据集上训练您的分类器,然后在引入随机错误标记后查看分类器的执行情况。您可以使用不同百分比的错误标记数据多次执行此操作,以查看对分类器的影响。
定性地说,大量错误标记的样本会增加过度拟合的影响,因此更重要的是不要将分类器过度拟合到数据集中。如果您有测试数据集(假设它也会出现错误拼写),那么您可能会考虑在分类器上训练测试数据集的分类精度低于最大值。
答案 2 :(得分:0)
人们通常会通过拥有多个注释器并计算他们的协议来处理您所描述的问题(例如Fleiss'kappa)。这通常被视为任何分类器性能的上限。如果三个人给你三个不同的答案,你知道任务很难,你的分类器就没有机会了。
作为旁注: 如果您不知道有多少记录被错误标记,则您无法理解问题的关键属性之一。随机选择1000条记录,并花一天时间查看其标签以获得一个想法。这真的是花时间。例如,我发现每小时我可以轻松查看500条带标签的推文。健康警告:这是非常繁琐的,但早上花在审查上让我很好地了解了我的注释者是多么分心。如果5%的记录不正确,那就不是问题了。如果50是不正确的,你应该回复你的老板并告诉他们不能这样做。
另一方面说明: 有人提到主动学习。我认为值得研究文献中的选项,记住标签可能需要改变。你说这很难。