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 个正确分类的样本要容易得多。因为在实际操作时检查误分类样本更加容易,这就导致了开发集会衍生出一定的偏差。如果你只对于开发产品和应用感兴趣,这些偏差就是可接受的。但如果你计划在学术论文中引用此结果,可能需要完全无偏地度量测试集的精度,此时这样做就会出问题。
敬请期待第17章:
将大型开发集拆分为两个子集,专注其一
机器学习训练秘籍已发布章节
为了让大家尽快接触到机器学习训练秘籍中文版,我们在最短的时间内组织了翻译工作。若有任何错误,还请包涵。翻译内容仍在持续改进中,如果大家有任何意见和建议,欢迎给我们留言。
领取专属 10元无门槛券
私享最新 技术干货