Skip to content
This repository was archived by the owner on Aug 16, 2022. It is now read-only.

Latest commit

 

History

History
32 lines (20 loc) · 3.46 KB

16.cleaning-up-mislabeled-dev-and-test-set-examples.md

File metadata and controls

32 lines (20 loc) · 3.46 KB

16. 清洗误标注的开发集和测试集样本

在进行误差分析时,你可能会注意到一些开发集的样本被 误标注(mislabeled) 了。此处的“误标注”指的是图像在使用算法处理前,就已经被标注者进行了错误的标注,也即是说某个样本(x,y)的分类标签(label) y的值并不正确。比如一些不是猫的图片被误标注为猫,反之亦然。如果你推测这些误标注的图片作用很关键,可以添加一个类别来跟踪记录误标注样本的比例:

需要修正开发集中的错误标签吗?设立开发集的目的是为了帮助你快速评估算法性能,从而判断算法 A 和 B 哪一个更好。如果开发集中误标注的部分影响了你的判断,那便值得去花时间改正这些标签。

举个例子,假设你的分类器表现如下:

  • 开发集的整体准确率........90%(10%整体误差)
  • 误标注样本导致的错误....0.6%(6%开发集误差)
  • 其他原因导致的错误........9.4%(94%开发集误差)

相对于你可能改进的 9.4% 误差,误标记的 0.6% 误差就不那么显著了。在开发集中手动修正误标注样本不会带来不好的影响,而这样做并不是必要的:这时候即使不知道整个系统是 10% 或 9.4% 误差可能也是没什么问题的。

假设你不断改进猫咪分类器并达到以下性能:

  • 开发集的整体准确率........98.0%(2.0%整体误差)
  • 误标注样本导致的错误....0.6%(30%开发集误差)
  • 其他原因导致的错误........1.4%(70%开发集误差)

此时 30% 的开发集误差是由误标注样本造成的,这对精度估计造成了显著的影响。这时就值得改进开发集样本中的标签质量。处理这些误标注的样本将帮助你找出分类器的误差是接近 1.4% 还是 2.0% --- 这是一个相对显著的差异。

在初始阶段容许一些误标注的开发集/测试集样本并不罕见,你可以选择在系统改进到一定程度时再来考虑误标注的样本,因为这些误差在整体误差中的占比会逐渐增大。

上一章中解释了如何通过算法改进类似于狗、大猫和模糊图片的误差类别,而在本章你学习了如何通过修正数据的标签来处理误标注的样本。

不论你使用什么方式修正开发集标签,请记住要将同样的方式应用于你的测试集,这可以保持二者服从相同的分布。我们在第 6 章中讨论过了这样做的意义,在那个问题中,团队成员花费了很多时间优化开发集,直到后来才意识到他们正在根据不同的测试集进行不同的标准判断。

如果你决定改进标签质量,请仔细检查系统中误分类和正确分类的样本的标签。对于某个样本,可能原始标注和算法预测的标签都是错误的。如果你仅修复系统误分类的样本标签,则有可能在评估中引入偏差。假设你有 1000 个开发集样本,同时分类准确率为 98%,那么检查 20 个误分类的样本会比检查 980 个正确分类的样本要容易得多。因为在实际操作时检查误分类样本更加容易,这就导致了开发集会衍生出一定的偏差。如果你只对于开发产品和应用感兴趣,这些偏差就是可接受的。但如果你要在学术论文中引用此结果,可能需要完全无偏地度量测试集的精度,此时这样做是有问题的。