当训练集包含监督分类中的一些错误数据时,我该怎么办?
Posted
技术标签:
【中文标题】当训练集包含监督分类中的一些错误数据时,我该怎么办?【英文标题】:what should I do when training set contains some error data in supervised classification? 【发布时间】:2013-01-05 19:15:56 【问题描述】:我正在做一个执行文本自动分类的项目,我有很多数据集,如下所示:
文字 |类别名称
xxxxx... | AA
yyyyy... | BB
zzzz... | AA
然后,我将使用上面的数据集生成一个分类器,一旦有新文本出现,分类器可以用正确的 CategoryName 标记新文本 (文字为自然语言,大小在10-10000之间)
现在,问题是,原始数据集包含一些不正确的数据,(例如,AAA 应该标记为类别 AA,但它意外标记为类别 BB),因为这些数据是手动分类的。而且我不知道哪个标签错了,有多少百分比错了,因为我无法手动查看所有数据...
所以我的问题是,我该怎么办?
我可以通过某种自动方式找到错误的标签吗? 当新数据出现时如何提高准确率和召回率? 如何评估错误数据的影响? (因为我不知道有多少百分比数据是错误的) 还有其他建议吗?【问题讨论】:
【参考方案1】:显然,没有简单的方法可以解决您的问题 - 毕竟,如果您已经拥有可以检测错误分类的系统,为什么还要构建分类器。
你知道错误的分类对你的学习有多大影响吗?如果它们只有一小部分,它们应该不会对性能造成太大影响。 (编辑。啊,显然你没有。无论如何,我建议你尝试一下 - 至少如果你能在看到错误结果时识别出错误结果。)
当然,您总是可以先训练您的系统,然后让它建议训练数据的分类。这可能会帮助您识别(并纠正)错误的训练数据。这显然取决于您拥有多少训练数据,以及它是否足够广泛以允许您的系统在有错误数据的情况下学习正确的分类。
【讨论】:
另外,也许错误数据的存在实际上会帮助您避免过度拟合。 谢谢你的回答,我不知道错误的分类对你的学习有多大影响......我无法估计。它包含大约5M的记录..调整标签非常困难 我明白你关于主动学习的观点并继续改进模型......这真的很有帮助,我可以将我的分类部署到生产中作为 dogfood..【参考方案2】:您能否手动查看任何数据以找到一些错误标记的示例?如果是这样,假设错误标记存在某种模式,您也许可以训练第二个分类器来识别错误标记的数据。了解错误标记是否是一个纯粹的随机过程(它只是训练数据中的噪声)或者错误标记是否与数据的特定特征相关,这对您很有用。
如果您无法估计有多少部分训练集实际上被错误标记,则您无法评估错误标记数据对特定数据集的影响。您在评论中提到您有大约 500 万条记录。如果您可以正确地手动标记数百个,您可以在该数据集上训练您的分类器,然后查看分类器在引入随机错误标记后的表现。您可以使用不同百分比的错误标记数据多次执行此操作,以查看对分类器的影响。
从定性上讲,大量错误标记的样本会增加过度拟合的影响,因此更重要的是不要让分类器过度拟合数据集。如果您有一个测试数据集(假设它也存在标签错误),那么您可能会考虑将分类器训练为在测试数据集上低于最大分类准确度。
【讨论】:
【参考方案3】:人们通常通过拥有多个注释器并计算他们的一致性来处理您描述的问题(例如 Fleiss 的 kappa)。这通常被视为任何分类器性能的上限。如果三个人给了你三个不同的答案,你就知道这个任务很艰巨,你的分类器没有机会。
附带说明: 如果您不知道有多少记录被错误标记,则您不了解问题的关键属性之一。随机选择 1000 条记录,并花一天时间查看它们的标签以获得一个想法。这真的是值得花的时间。例如,我发现每小时可以轻松查看 500 条带标签的推文。健康警告:这非常乏味,但一个上午的复习让我很好地了解了我的注释者是多么分心。如果有 5% 的记录不正确,则不是这样的问题。如果 50 是不正确的,你应该回去告诉你的老板,告诉他们这是不可能的。
另外说明: 有人提到主动学习。我认为值得从文献中研究选项,记住标签可能必须改变。你说这很难。
【讨论】:
以上是关于当训练集包含监督分类中的一些错误数据时,我该怎么办?的主要内容,如果未能解决你的问题,请参考以下文章